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.