WP_CONTENT_DIR এবং WP_PLUGIN_DIR এর পরিবর্তে আমার কী ব্যবহার করা উচিত?


15

প্লাগিন এবং সামগ্রী ডিরেক্টরি নির্ধারণের জন্য ওয়ার্ডপ্রেস ডকুমেন্টেশনে বলা হয়েছে:

ওয়ার্ডপ্রেস সামগ্রী এবং প্লাগইন ডিরেক্টরিগুলির পথ নির্ধারণ করার সময় নিম্নলিখিত ধ্রুবকগুলির ব্যবহার করে। এগুলি সরাসরি প্লাগইন বা থিম দ্বারা ব্যবহার করা উচিত নয় , তবে এখানে সম্পূর্ণতার জন্য তালিকাবদ্ধ রয়েছে।

এটা তোলে লিস্টে যায় WP_CONTENT_DIRএবং WP_PLUGIN_DIRধ্রুবক থিম এবং প্লাগইন ডেভেলপার এই কারণে ব্যবহার করা উচিত নয় সম্ভবতঃ মধ্যে:

ওয়ার্ডপ্রেস ব্যবহারকারীদের তাদের ডাব্লুপি-কন্টেন্ট ডিরেক্টরি যে কোনও জায়গায় রাখতে দেয়, তাই আপনার কখনই ধরে নিতে হবে না যে প্লাগইনগুলি ডব্লিউপি-সামগ্রী / প্লাগইনগুলিতে থাকবে, বা যে আপলোডগুলি ডব্লিউপি-বিষয়বস্তু / আপলোডগুলিতে থাকবে, বা থিমগুলি ডাব্লুপি- বিষয়বস্তু / থিম।

মার্ক জাকিথ এখানেও মন্তব্য করেছেন যে এই ধ্রুবকগুলি ব্যবহার করা উচিত নয়:

WP_PLUGIN_URL বা WP_PLUGIN_DIR ব্যবহার করবেন না - প্লাগইনগুলি প্লাগিন ডিরেক্টরিতে নাও থাকতে পারে।

সুতরাং, এই ধ্রুবকগুলি ব্যবহার না করে প্লাগইনস, ডাব্লুপি-কনটেন্ট এবং থিম ফোল্ডারগুলিতে পুরো পথটি উল্লেখ করার স্বীকৃত উপায় কী?

একটি সাধারণ উদাহরণ হিসাবে, সমস্ত ইনস্টল হওয়া প্লাগইনগুলির পুরো পথ আউটপুট করতে, আমি এটি করতে পারি:

<?php
$plugins = get_plugins();

foreach ($plugins as $file => $details) {
    echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}

যা এর মতো একটি তালিকা তৈরি করে:

/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php

(উদাহরণস্বরূপ, যদি আমি কোনও সাইটের ব্যাকআপের অংশ হিসাবে ব্যবহারকারীকে নির্বাচিতভাবে প্লাগইনগুলি সংরক্ষণাগারভুক্ত করার অনুমতি দেওয়ার জন্য একটি প্লাগইন লিখছিলাম তবে আমি এটি করতে চাইব))

যদি ব্যবহারটি WP_PLUGIN_DIRভুল হয় তবে প্রস্তাবিত বিকল্পটি কী? wp_upload_dir()আমি যে প্লাগইন, থিম এবং ডাব্লুপি-কনটেন্ট ফোল্ডারটি খুঁজে পেতে পারি তার সমতুল্য নেই , যা সম্ভাব্য ঘোরাঘুরির থিম এবং প্লাগইনগুলির মূল ডিরেক্টরিগুলি সমস্যাযুক্ত উল্লেখ করে।



2
@ চার্লস ক্লার্কসন আমি আমার প্রশ্নের প্রথম বাক্যে সেই পৃষ্ঠাটি উল্লেখ করছি। এটি উপরের ধ্রুবকগুলি ব্যবহার না করার জন্য বলেছে, তবে এই জাতীয় জিনিসের বিকল্পের পরামর্শ দেয় না WP_PLUGIN_DIR, সুতরাং এখানে আমার প্রশ্ন।
— নিক

উত্তর:


17

বর্তমান পথে বা গভীর নেস্ট করা রেফারেন্স ফাইল

বর্তমানের পথটি উল্লেখ করতে

plugin_dir_path( __FILE__ )."further/nesting/here.css";

যা প্লাগইন এবং থিমগুলিতে কাজ করে ।

একটি প্লাগইনে ইউআরএল / ইউআরআই উল্লেখ করুন

একটি প্লাগইন বা থিম ফাইলের দিকে নির্দেশ করতে, ব্যবহার করুন

plugins_url( "path/to/file", __FILE__ );

যা কেবলমাত্র প্লাগইনে কাজ করে

wp-adminফোল্ডারে ইউআরএল / ইউআরআই উল্লেখ করুন

সর্বদা তাদের নির্দেশ করুন admin_url( 'some/path' );। নেই get_admin_url()হিসাবে ভাল।

wp-includesফোল্ডারে ইউআরএল / উরি উল্লেখ করুন

তাদের নির্দেশ করুন includes_url( 'some/path' );

সাইটের হোমগুলির সাথে সম্পর্কিত একটি ইউআরএল / ইউআরআই

আছে home_url( 'etc' );বা তার get_home_url()জন্য। অনুরূপ get_site_url()এবং site_url()। তারপরে সেখানেও রয়েছে network_home_url()। এবং আপনি পেয়েছেনnetwork_admin_url()

wp-content অথবা নাম পরিবর্তিত ডিরেক্টরি

আপনি wp-contentফোল্ডারের নামটি নতুন করে সংজ্ঞায়িত করতে পারেন । সুতরাং আপনি content_url()সেখানে ব্যবহার ।

প্লাগইন ফোল্ডার ইউআরএল কিভাবে পাবেন?

যদি WP_PLUGIN_DIR ব্যবহার করা ভুল হয় তবে প্রস্তাবিত বিকল্পটি কী?

plugins_url()কোনও পরামিতি ছাড়াই কেবল ব্যবহার করুন ।

আপনি যদি এটি কোনও প্লাগিনের জন্য ব্যবহার করেন তবে এটি এমইউ প্লাগইনগুলির জন্যও কাজ করে।

সম্পাদনা # 1 আপনি যদি বর্তমান প্লাগইনটির পথে আগ্রহী হন তবে ব্যবহার করুন plugin_basename();।

সম্পাদনা # 2 আপনি যদি পাশের সমস্ত সক্রিয় প্লাগইনগুলিতে আগ্রহী হন তবে ব্যবহার করুন wp_get_active_network_plugins();।

যদি আপনি মাল্টিসাইটে না থাকেন তবে সাথে যান wp_get_active_and_valid_plugins();। এটি মাল্টিসাইট / নেটওয়ার্ক অ্যাকাউন্টে নেবে। মনে রাখবেন যে আপনি মাল্টিসাইটে না থাকলে এটি একটি অ্যাকাউন্টে নেবে তবে আপনি একটি sunrise.phpড্রপিন পেয়েছেন ।

আপনি পারে করলে তা পুনরুদ্ধার মাধ্যমে get_option( 'active_plugins' );, যা সুপারিশ করা যেমন ফিল্টার এবং প্লাগ ইন বৈধতা অ্যাকাউন্ট, যা বিভিন্ন অনুষ্ঠান উপর ঘটবে মধ্যে নেয় না।


আরও পড়া

এই তালিকাটি এগিয়ে চলেছে। আরও তথ্যের জন্য কোয়েরিপোস্টস.কম- এ অনুসন্ধানের ফলাফলগুলি একবার দেখুন।

এই নিবন্ধটি সমস্ত পাথ সম্পর্কে পরম গভীরতায় চলে goes


3
এর জন্য ধন্যবাদ, তবে আপনার উত্তরটি সম্পূর্ণরূপে সার্ভারের পাথগুলির চেয়ে URL গুলি নিয়ে কাজ করে বলে মনে হচ্ছে, যা আমি আগ্রহী example উদাহরণস্বরূপ, plugins_url()সার্ভারের ডিরেক্টরিতে পুরো পথ নয়, প্লাগইন ফোল্ডারে ইউআরএল ফিরিয়ে দেয়। ডিরেক্টরিগুলি পরিচালনা করার জন্য কি একই রকম ফাংশন রয়েছে যা আমি অবগত নই? বা WP_PLUGIN_DIRধ্রুবকটি সহজভাবে ব্যবহার না করার পরামর্শ কি ?
— নিক

(আমি বিশেষত আমার নিজের কোড যুক্ত প্লাগইন ব্যতীত ইনস্টল হওয়া প্লাগইনগুলির পুরো পথটি সন্ধান করতে আগ্রহী, যদি এটি ব্যাখ্যা করতে সহায়তা করে।)
— নিক

@ নিক দেখুন আপডেট।
— কায়সার

"সমস্ত প্লাগইন সম্পর্কে পরম গভীরতায় যায়" নিবন্ধটি আর উপলব্ধ নেই no এবং আমি এখনও বুঝতে পারি না কীভাবে ব্যবহার না করে প্লাগইন ডিরেক্টরিতে পরম পথ পেতে পারি WP_PLUGIN_DIR।
— Xedin অজ্ঞাত

4
  1. এটি বর্তমান প্লাগইনগুলির ডিরেক্টরিটির সার্ভারের পথ ফেরায়:

    plugin_dir_path(__FILE__)
    
    // example: /home/myserver/public_html/wordpress_install/wp-content/plugins/exampleplugin/

    রেফ: https://codex.wordpress.org/Function_References/plugin_dir_path

    এতে বিভ্রান্ত হওয়ার দরকার নেই:

    plugins_dir_path(__FILE__)

    (এতে বহুবচন "প্লাগইন এস " লক্ষ্য করুন))

  2. যেহেতু আপনি চান না যে প্লাগইন ডিরেক্টরিটির নামটি ফিরে এসেছে আমাদের তা ছড়িয়ে দিতে হবে। এখানে একটি ফাংশন রয়েছে যা প্লাগইন ডিরেক্টরি এবং ফাইলটির নাম দেয়:

    plugin_basename(__FILE__)
    
    // example: exampleplugin/exampleplugin.php
  3. তবে অবশ্যই আমরা প্লাগইনের ফাইলের নামটিও চাই না, তাই আমাদের plugin_basename(__FILE__)প্রথমে এটি স্ট্রিপ করতে হবে । প্লাগইনটির ফাইলের নামটি ফিরিয়ে দিতে:

    basename(__FILE__)
    
    // example: exampleplugin.php
  4. সুতরাং প্লাগইন ডিরেক্টরিতে একটি পথ তৈরি করতে এগুলি ব্যবহার করতে, আমরা str_replace()ফাংশনটি এরকম কিছু ব্যবহার করতে পারি :

    $myBnm = basename(__FILE__); // value: exampleplugin.php
    $myDir = plugin_basename(__FILE__); // value: exampleplugin/exampleplugin.php
    $myStr = str_replace($myBnm,"",$myDir); // value: exampleplugin/
    $myPth = plugin_dir_path(__FILE__); // value: /home/myserver/public_html/wordpress_install/wp-content/plugins/exampleplugin/
    return str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/
  5. এবং যদি প্রয়োজন হয়, সেই চূড়ান্ত লাইনটি অবশ্যই পুনরায় ব্যবহারের জন্য একটি চলককে বরাদ্দ করা যেতে পারে।

    পরিবর্তে:

    return str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/

    এর মতো কিছু ব্যবহার করুন:

    $thePlgDir = str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/

    এবং পরে যখন প্রয়োজন হয়:

    return $thePlgDir;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.