আমি কীভাবে প্লাগিনগুলির স্লাগ সন্ধান করতে পারি?


11

আমি ভাবছি যে আমি কীভাবে প্লাগিনগুলির স্লাগ (স্লাগ = অভ্যন্তরীণ নাম যা ওয়ার্ডপ্রেস প্লাগইন আপডেটগুলি করতে ব্যবহার করতে এবং বর্তমানে কোন প্লাগইনগুলি সক্রিয় রয়েছে তা নির্ধারণ করতে) পেতে পারি? এটি সাধারণত প্লাগইনের ফোল্ডারের নাম তবে প্লাগইনটির যদি কোনও ফোল্ডার না থাকে তবে এটির ফাইলের নাম (হ্যালো.এফপি এর মতো)। অন্য কোন ব্যতিক্রম আছে?

  1. ছোট হাতের অক্ষর এবং বড় হাতের অক্ষরগুলি কী বিবেচনা করে?
  2. প্লাগইনটির ফোল্ডারের নামের চেয়ে আলাদা স্লাগ থাকতে পারে? হ্যালো.এফপি এবং অন্য /hello.php/hello.php নামে একটি প্লাগইন থাকলে কী হবে?

খুব ভাল প্রশ্ন, করুণা যে আমরা
কিউ'র জন্য উদ্বোধন

উত্তর:


8

প্লাগইন সনাক্ত করতে ওয়ার্ডপ্রেসে ব্যবহৃত স্ট্রিংটি হ'ল:

plugin_basename($file);

প্লাগইন শিরোনাম সহ$file একটি ফাইল কোথায় ।

সুতরাং আপনি যদি আপনার প্লাগইনে থাকেন তবে স্লাগটি এতে পাবেন:

$slug = plugin_basename( __FILE__ );

1
plugin_basename ($ ফাইল); 3.8.1 থেকে স্লাগ নয়। এটি ফোল্ডার / প্লাগইন_মাইন_ফিল.পিএফ পাথ। প্লাগইনটির "স্লাগ" হিসাবে আকিসমেট "আকিসমেট / আকিসমেট.এফপি" নয় তবে এটি "আকিসমেট"।
জেফ ম্যাটসন

3
এটি এখন উভয় ক্ষেত্রেই সঠিক উত্তর নয়।
মজিক

@ মজিক সত্য, ওয়ার্ডপ্রেস 4.7.4 এর জন্য এটি উত্তর নয়
মেরেকি

2
প্লাগইন স্লাগ উত্পন্ন করার আরেকটি উপায় হ'ল ব্যবহার করে dirname(plugin_basename(__FILE__))
ইলাঞ্চো

2

আপনি যদি WP-CLI ইনস্টল করেন তবে আপনি কমান্ড লাইন থেকে তাদের স্লাগ এবং সংস্করণ সহ প্লাগইনগুলির তালিকা পেতে পারেন:

> wp plugin list

আমি জানি এটি সম্ভবত আপনি যা চান তা নয়, যদি আপনার কোড স্লাগ সন্ধান করতে হয় তবে এটি টিজিএম-প্লাগইন-অ্যাক্টিভেশন প্লাগইনের সাথে কাজ করার সময় আমাকে সহায়তা করেছে।

আমি ডাব্লুপি-সিএলআই ছাড়া ওয়ার্ডপ্রেস নিয়ে কাজ করা কঠিন বলে মনে করি, সাধারণভাবে এটি ওয়ার্ডপ্রেস সম্পর্কিত অনেকগুলি সাধারণ কাজের জন্য একটি খুব দরকারী সরঞ্জাম।


2

প্লাগইন (প্রধান) ফাইল এবং প্লাগইনের স্লাগের মধ্যে পার্থক্য এমন একটি জায়গা যেখানে ওয়ার্ডপ্রেস কোডেক্স আরও ভাল করতে পারে। আমি আপনার বিভ্রান্তিটি বুঝতে পেরেছি কারণ আমি এটি খুব সম্প্রতি অনুভব করেছি (হতাশার সাথে মিশ্রিত)।

এটি আমি ওয়ার্ডপ্রেস কোর কোডে কিছু "গোয়েন্দা কাজ" করে শিখেছি।

প্লাগইন ফাইল

এটি একটি অনন্য উপায় যা ওয়ার্ডপ্রেস একটি প্লাগইন সনাক্ত এবং রেকর্ড করে। এটি প্লাগইন ডিরেক্টরি এবং মূল প্লাগইন ফাইল (ফাইলের শিরোনাম সহ বিভিন্ন প্লাগইন বিবরণ যেমন সংস্করণ, লেখক, ইত্যাদি) দিয়ে তৈরি।

এটি দেখতে এমন কিছু লাগবে: your-plugin-directory/main-file.php

আপনি যদি সক্রিয় প্লাগইন ডেটা (এর মাধ্যমে ফিরে get_option( 'active_plugins' )) দেখেন তবে দেখবেন যে প্লাগইনগুলি সঠিকভাবে সনাক্ত করার জন্য ওয়ার্ডপ্রেসের কেবল এই প্লাগইন ফাইলের প্রয়োজন।

আপনি এটিকে আপনার প্লাগইনের মূল ফাইল আপেক্ষিক পথ হিসাবে মনে করতে বাছাই করতে পারেন ( wp-content/plugins/যে ডিরেক্টরিটির সাথে সম্পর্কিত)। আপনি এই জাতীয় কিছু দিয়ে মূল প্লাগইন ফাইলটির পরম পথটি "রচনা" করতে পারেন:trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file

কোর নিজেই প্লাগইন ফাইলটি উত্পন্ন করে:

$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );

প্লাগইন স্লাগ

প্লাগইনটির জন্য "স্লাগ" কোনও ধরণের মানসম্মত আইডি হওয়ার প্রত্যাশা করবে যেমন পোস্ট স্লাগ পোস্টগুলির জন্য - সুতরাং আপনি এই "স্লাগ "টিকে ওয়ার্ডপ্রেস মূল ফাংশনগুলিতে সরবরাহ করতে এবং জিনিসগুলি চালিয়ে যাওয়ার জন্য ব্যবহার করতে পারেন।

আসলে তা না. প্লাগইন স্লাগগুলির জন্য উল্লেখগুলির জন্য মূল অনুসন্ধান করার পরে (বা বিষয়গুলির জন্য থিমগুলি) এবং প্রায় কিছুই না খুঁজে পাওয়ার পরে, আমি মনে করি এটি সম্পর্কে আমার একটা উপলব্ধি আছে।

কেবলমাত্র সত্যিকারের স্লাগগুলি হ'ল কোনও অনন্য ইউআরএল-এর মাধ্যমে অ্যাক্সেসযোগ্য জিনিসগুলির জন্য: পোস্ট, পৃষ্ঠাগুলি, করশক্তি ইত্যাদি That এটি কোনও কিছুর নাম (কোনও পোস্টের শিরোনামের মতো) নেওয়ার এবং এর ইউআরএল বান্ধব সংস্করণ তৈরির পুরো বিষয়টি: ব্যবহার করতে এটি একটি ইউআরএল।

তবে আমরা কোথায় ইউআরএলগুলিতে থিম / প্লাগিনগুলি "স্লাগস" ব্যবহার করব?

আমরা পৃথক ওয়ার্ডপ্রেস ইনস্টলেশনগুলিতে এটি করি না - ডাব্লুপি প্রশাসক বা সীমান্তেও নয়।

তবে, ওয়ার্ডপ্রেস কোড, ওয়ার্ডপ্রেস.অর্গ সাইট এর সাথে খুব একটা জড়িয়ে রয়েছে এমন একটি জায়গা লোকেরা দু'জনের মধ্যে পার্থক্য করতে বেশ কষ্ট পাচ্ছে, এটি সহ ওয়ার্ডপ্রেস.আর.আর থিম বা প্লাগইন স্লাগগুলি কোনও পোস্ট বা পৃষ্ঠার স্লাগের মতোই কাজ করা উচিত তা বিবেচনা করা বিকাশকারীদের মধ্যে একরকম সাধারণ হয়ে উঠেছে ।

তারা একই উদ্দেশ্যে কিন্তু পৃথক ওয়েবসাইটে পরিবেশন করে । WordPress.org এ এগুলি অন্যের কাছ থেকে একটি থিম এবং বাকী একটি প্লাগইন (পছন্দ মতো ইউআরএল https://wordpress.org/plugins/akismet/) অনন্যভাবে সনাক্ত করতে ব্যবহৃত হয় ।

কিন্তু যখন এটি পৃথক ওয়ার্ডপ্রেস ইনস্টলেশনের ক্ষেত্রে আসে , একই স্বাতন্ত্র্যতা গ্যারান্টিযুক্ত হতে পারে না কারণ এটি কার্যকর করার কোনও অধিকার নেই (ওয়ার্ডপ্রেস.আর.এজে)। সমস্ত প্লাগইন এবং থিমগুলি ওয়ার্ডপ্রেস.আর্গ থেকে আসে তবে এটি কাজ করতে পারে তবে কৃতজ্ঞতাবশত ঘটনাটি এটি নয়।

ওয়ার্ডপ্রেস কোড থিম / প্লাগইন স্লাগগুলির সাথে কী করে?

ওয়ার্ডপ্রেস কোর কোড থিম বা প্লাগইন ইনস্টল, সক্রিয়করণ, আপডেট করা, মুছে ফেলার মতো কাজ করতে থিম / প্লাগইন স্লাগগুলির উপর নির্ভর করে না

থিমগুলির জন্য, এটি থিম ডিরেক্টরিতে নির্ভর করে যেহেতু একটি থিমের মূল এন্ট্রি পয়েন্টটি style.cssফাইল (আপনি নিজের থিমের বিবরণ শিরোনাম ধারণ করতে অন্য কোনও সিএসএস ফাইল ব্যবহার করতে পারবেন না)।

প্লাগইনগুলির জন্য, এটি প্লাগইন ডিরেক্টরি এবং প্রধান প্লাগইন ফাইলের উপর নির্ভর করে , যেহেতু প্লাগইনগুলি তাদের পছন্দ মতো তবে তাদের প্রধান ফাইলটি কল করতে পারে।

মূল বিষয় থিম / প্লাগইন স্লাগগুলি ব্যবহার করে শুধুমাত্র যখন এটি WordPress.org ডিরেক্টরি থেকে থিম এবং প্লাগইনগুলি পরিচালনা করে: প্লাগইনগুলির তালিকা আনা, আপডেটগুলি পরীক্ষা করা, ডিরেক্টরি ব্যবহারের ডেটাতে ফিরে রিপোর্ট করা ইত্যাদি।


প্লাগইন স্লাগগুলি সম্পর্কে জিনিসগুলি গুটিয়ে ফেলার জন্য : আপনি যখনই slugএন্ট্রি সহ প্লাগইন ডেটা পাবেন তখনি 99% সময় এটি প্লাগইনের ওয়ার্ডপ্রেস.আরোগর্গ স্লাগকে উল্লেখ করবে

আমরা কীভাবে প্লাগইনগুলি সনাক্ত করতে পারি?

আপনি যদি ওয়ার্ডপ্রেস ইনস্টলেশনের কোনও নির্দিষ্ট প্লাগইনকে প্রোগ্রামগতভাবে সক্রিয়, আপডেট, নিষ্ক্রিয় করতে বা মুছতে চান তবে আপনার প্লাগইন ফাইলটি ব্যবহার করা দরকার আপনি আপনার প্লাগইন এর প্রধান ফাইলটি থেকে এটি পেতে পারেন :

$plugin_file = plugin_basename( __FILE__ );

আপনি যদি অন্য একটি প্লাগইন থেকে একটি নির্দিষ্ট প্লাগইন লক্ষ্যবস্তু করতে চান তবে জিনিসগুলি কিছুটা জটিল হয়ে ওঠে কারণ আপনাকে "অনুমানের" কিছুটা উপর নির্ভর করতে হবে।

আপনি প্লাগিনের নামটি হার্ড-কোড করতে পারবেন, সমস্ত প্লাগইনের তালিকায় প্লাগইন অনুসন্ধান করতে পারেন (get_plugins () দেখুন এবং সেখান থেকে প্লাগইন ফাইলটি পেতে পারেন।

যদি আপনি কোনও শ্রেণি বা ফাংশন জানেন যা এই প্লাগইন দ্বারা সংজ্ঞায়িত করা হয় আপনি প্রতিবিম্ব ব্যবহার করতে পারেন ( ক্লাসগুলির জন্য এই উত্তরটি দেখুন এবং কার্যকারণের জন্য এটি একটি দেখুন )।


আমি আশা করি এটি আপনাকে এবং অন্যদের "প্লাগইন স্লাগস" এর সাথে মোকাবিলা করার জন্য কঠিন সময় কাটাতে সহায়তা করে। এটি আমাকে কয়েক ঘন্টা বাঁচাতে পারত :)


0

আসল পোস্টটি থেকে কেবল স্পষ্ট করা।

আমি যেভাবে প্লাগইন স্লাগটি পেয়েছি তা হ'ল প্রথমে আপনার প্লাগইন ফোল্ডারে নেভিগেট করে তারপরে প্লাগইনের সাথে সম্পর্কিত ফোল্ডারটি খোলার পরে এবং অবশেষে নীচের কোডটি থাকা ফাইলটি সন্ধান করা। একবার আপনি এই ফাইলটি খুঁজে পেয়ে গেলে ফাইলের নাম বিয়োগের এক্সটেনশানটি আপনার প্লাগইন স্লাগ হওয়া উচিত।

উদাহরণস্বরূপ, যদি আমি অ্যাডভান্সড-প্লাগইন-অসাধারণতা.পিএফপি নামের কোনও ফাইলে নীচের কোডটি পাই তবে আমার স্লাগটি অ্যাডভান্সড প্লাগইন-দুর্দান্ততা হবে।

আশাকরি এটা সাহায্য করবে!

/*
Plugin Name: Name of plugin here
Version: 2.4.6
Description: plugin description here
Author: plugin author here

-1 বেশিরভাগ ফাইলের নাম এবং ডিরেক্টরিগুলি মিলে যাওয়ার পরে, এটি কোনও নির্ভরযোগ্য পদ্ধতি নয় কারণ আপডেট স্লাগ আসলে ডিরেক্টরি হয় - ফাইল নাম নয় (ডিরেক্টরি না থাকলে)
মজিক

না এমনকি ডিরেক্টরি! আমার আপডেট হওয়া উত্তরটি দেখুন, এটি আসলে প্লাগইন নাম থেকে এসেছে।
মজিক

0

দুর্ভাগ্যক্রমে স্লগটি আপডেট এপিআইয়ের মাধ্যমে ফিরে আসে, আপনি যদি এআইপি নিজেই জিজ্ঞাসা না করেন তবে এই প্রশ্নের উত্তর এতটা সুস্পষ্ট নয়। তবে, আপনি যদি আপনার বর্তমান প্লাগইন স্লাগস এবং সম্পর্কিত প্লাগইন ডেটাগুলির একটি তালিকা দেখতে চান তবে আপনি তা করতে পারেন:

print_r(get_site_transient('update_plugins'));

তবে, এতে আরও 12 ঘন্টা নতুন ইনস্টল হওয়া প্লাগইনে তথ্য থাকবে না, আপনাকে সেগুলির জন্য আলাদা কিছু করতে হবে, যেমন। থেকে কোডের একটি পরিবর্তিত সংস্করণ ব্যবহার wp_update_pluginsমধ্যে wp-includes/update.php...

এটি পরীক্ষা করে দেখার জন্য এটি করা হয়ে গেলে, এটি নিশ্চিত হয়ে দেখা যায় যে, প্লাগইন ফাইলের নাম বা অবস্থান বা বড় হাতের কথা বিবেচনা না করেই এটি Plugin Nameসম্ভবত আপডেট আপডেট স্লাগ তৈরি করে, সম্ভবত এটি sanitize_title। সুতরাং আমি বিশ্বাস করি সঠিক উত্তরটি হওয়া উচিত:

// if you have the plugin basename:
// $pluginfile = WP_PLUGIN_DIR.'/'.$pluginbasename;

// otherwise if you have the absolute path already:
$plugin = get_plugin_data($pluginfile);
$pluginslug = sanitize_title($plugin['Name']);

+1 এবং একটি অতিরিক্ত নোট হ'ল এটি সময়ের সাথে সাথে পরিবর্তিত হতে পারে কারণ ওয়ার্ডপ্রেস.আর.টি দল স্পষ্ট করে দিয়েছিল যে স্লাগ গণনা পদ্ধতিটি এখনও সম্পূর্ণ চূড়ান্ত নয়
মার্ক কাপলুন

আমি নিশ্চিত না যে এটি সঠিক, আমি এটি একটি প্লাগিনের জন্য করার চেষ্টা করছিলাম কিন্তু এটি ব্যর্থ হয়েছে: প্রত্যাবর্তিত হিসাবে প্লাগইন নামটি "রিসপন্সেস ওয়ার্ডপ্রেস স্লাইডার - সলিলোকুই লাইট" এবং স্লাগটি হ'ল: স্বতন্ত্র-লাইট
ক্রিস

আমার সন্দেহ হয় কারণ প্লাগইনটি সংগ্রহস্থলের কাছে জমা দেওয়ার সময় স্লাগ তৈরি হয়েছিল এবং পরে নামের সাথে পরিবর্তন হয় না ... বেশিরভাগ ক্ষেত্রেই এটি ডিরেক্টরিটির নামের সাথে মেলে তবে উভয়ের ব্যতিক্রম থাকলে, এটি হতে পারে এক বা অন্য হতে। এটি আদর্শ নয়: - /
মজিক

0

প্লাগইনটির ফোল্ডার নাম (পিএইচপি 5.3 +) ডিআইআর পেরিয়ে প্লাগইন_বাসনেম () এর মতো করে পেতে পারেন:

$plugin_foldername = plugin_basename( __DIR__ );

0

এটা চেষ্টা কর:

function get_slugname(){
    $tmp = array();
    $plugins_all = get_plugins() ;
    $plugin_slug = explode('/',dirname(plugin_basename(__FILE__)));
    foreach ($plugins_all as $key=>$value) {
        if ($plugin_slug[0] == explode('/',$key)[0] ) {
        $tmp = $value;
        $tmp['slug'] = explode('/',$key)[0];
        $tmp['file'] = explode('/',$key)[1];
        }
    }
return $tmp;
}

1
দয়া করে আপনার উত্তর সম্পাদনা এবং কি এই কোড আছে একটি ব্যাখ্যা যোগ করুন।
নাথন জনসন

0

বেশিরভাগ প্লাগইনগুলির জন্য, "স্লাগ" ডিরেক্টরি নামের মতো হবে। যদিও .org লোকেরা ডিরেক্টরি নামটি যেকোন কিছুতে সেট করতে পারে।

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