সমস্ত ওয়ার্ডপ্রেস হুক এবং ওভার-রেডেবল ফাংশনগুলির (প্লাগেবল, স্ক্রিপ্টযোগ্য, ইত্যাদি) একটি তালিকা কোথায় পাব?
সম্পাদনা: প্লাগইন এখানে তালিকাভুক্ত করা হয়েছে ।
সমস্ত ওয়ার্ডপ্রেস হুক এবং ওভার-রেডেবল ফাংশনগুলির (প্লাগেবল, স্ক্রিপ্টযোগ্য, ইত্যাদি) একটি তালিকা কোথায় পাব?
সম্পাদনা: প্লাগইন এখানে তালিকাভুক্ত করা হয়েছে ।
উত্তর:
@ অ্যারলেন: কীথ এস যেমন অ্যাডাম ব্রাউন এর হুক্সের তালিকা দেখায় ওয়ার্ডপ্রেসের জন্য হুকের ডিফাক্টো রিসোর্স। তবে এটি নিখুঁত নয়:
সুতরাং যখন হুকগুলি historতিহাসিকভাবে যুক্ত করা হয়েছিল তখন বিশেষত বোঝার জন্য অ্যাডামের তালিকাটি একটি দুর্দান্ত সংস্থান, এটি প্রায় ততটা কার্যকর নয় যেমন আপনি নিজের সাইটে কোনও প্রদত্ত পৃষ্ঠায় হুককে ইনস্ট্রুমেন্ট করতে সক্ষম হয়েছিলেন।
আমি এই ধারণার সাথে কিছুক্ষণ ধরে বসে আছি তাই আপনার প্রশ্ন আমাকে " ওয়ার্ডপ্রেসের জন্য ইনস্ট্রুমেন্ট হুকস " নামে একটি প্লাগইন লিখতে উদ্বুদ্ধ করেছিল । আপনি স্ক্রিন শট এর নীচে পুরো উত্স খুঁজে পেতে পারেন এবং আপনি এখানে এটি টুকিটাকি থেকে ডাউনলোড করতে পারেন ।
সুতরাং এখানে যন্ত্রের মতো দেখতে একটি স্ক্রিনশট রয়েছে:
আপনি ইউআরএল প্যারামিটার ব্যবহার করে যন্ত্রটি ট্রিগার করেছেন instrument=hooks
, অর্থাত:
এবং প্রতিশ্রুতি হিসাবে, এখানে উত্স (বা এটি এখানে ডাউনলোড করুন ):
<?php
/*
Plugin Name: Instrument Hooks for WordPress
Description: Instruments Hooks for a Page. Outputs during the Shutdown Hook.
Version: 0.1
Author: Mike Schinkel
Author URI: http://mikeschinkel.com
*/
if ($_GET['instrument']=='hooks') {
add_action('shutdown','instrument_hooks');
function instrument_hooks() {
global $wpdb;
$hooks = $wpdb->get_results("SELECT * FROM wp_hook_list ORDER BY first_call");
$html = array();
$html[] = '<style>#instrumented-hook-list table,#instrumented-hook-list th,#instrumented-hook-list td {border:1px solid gray;padding:2px 5px;}</style>
<div align="center" id="instrumented-hook-list">
<table>
<tr>
<th>First Call</th>
<th>Hook Name</th>
<th>Hook Type</th>
<th>Arg Count</th>
<th>Called By</th>
<th>Line #</th>
<th>File Name</th>
</tr>';
foreach($hooks as $hook) {
$html[] = "<tr>
<td>{$hook->first_call}</td>
<td>{$hook->hook_name}</td>
<td>{$hook->hook_type}</td>
<td>{$hook->arg_count}</td>
<td>{$hook->called_by}</td>
<td>{$hook->line_num}</td>
<td>{$hook->file_name}</td>
</tr>";
}
$html[] = '</table></div>';
echo implode("\n",$html);
}
add_action('all','record_hook_usage');
function record_hook_usage($hook){
global $wpdb;
static $in_hook = false;
static $first_call = 1;
static $doc_root;
$callstack = debug_backtrace();
if (!$in_hook) {
$in_hook = true;
if ($first_call==1) {
$doc_root = $_SERVER['DOCUMENT_ROOT'];
$results = $wpdb->get_results("SHOW TABLE STATUS LIKE 'wp_hook_list'");
if (count($results)==1) {
$wpdb->query("TRUNCATE TABLE wp_hook_list");
} else {
$wpdb->query("CREATE TABLE wp_hook_list (
called_by varchar(96) NOT NULL,
hook_name varchar(96) NOT NULL,
hook_type varchar(15) NOT NULL,
first_call int(11) NOT NULL,
arg_count tinyint(4) NOT NULL,
file_name varchar(128) NOT NULL,
line_num smallint NOT NULL,
PRIMARY KEY (first_call,hook_name))"
);
}
}
$args = func_get_args();
$arg_count = count($args)-1;
$hook_type = str_replace('do_','',
str_replace('apply_filters','filter',
str_replace('_ref_array','[]',
$callstack[3]['function'])));
$file_name = str_replace($doc_root,'',$callstack[3]['file']);
$line_num = $callstack[3]['line'];
$called_by = $callstack[4]['function'];
$wpdb->query("INSERT wp_hook_list
(first_call,called_by,hook_name,hook_type,arg_count,file_name,line_num)
VALUES ($first_call,'$called_by()','$hook','$hook_type',$arg_count,'$file_name',$line_num)");
$first_call++;
$in_hook = false;
}
}
}
ডিবাগ বার অ্যাকশন হুক্স প্লাগইন
বর্তমান অনুরোধের জন্য বরখাস্ত কর্মের একটি তালিকা প্রদর্শন করে। ডিবাগ বার প্লাগইন প্রয়োজন।
কোডেক্সের একটি অ্যাকশন রেফারেন্স এবং একটি ফিল্টার রেফারেন্স রয়েছে । অ্যাডাম ব্রাউন একটি হুক ডাটাবেস তৈরি করেছেন যার উত্স কোডে সমস্ত হুক রয়েছে এবং উইকি পৃষ্ঠাগুলি, সংস্করণ তথ্য এবং উত্স কোডের লিঙ্কগুলি থেকে ডকুমেন্টেশন যুক্ত করেছে। আপনি কোডেক্সে ডকুমেন্টেশন লিখে এটিকে উন্নত করতে পারেন।
অবশ্যই, অন্য কিছু তথ্যের উপর নির্ভর করে কিছু হুক গতিশীল। wp_transition_post_status
ফাংশনটি নিন :
function wp_transition_post_status($new_status, $old_status, $post) {
do_action('transition_post_status', $new_status, $old_status, $post);
do_action("${old_status}_to_$new_status", $post);
do_action("${new_status}_$post->post_type", $post->ID, $post);
}
আপনি যদি কাস্টম পোস্টের ধরণ event
এবং একটি কাস্টম পোস্টের স্থিতি নিবন্ধ করেন তবে আপনার অ্যাকশন হুক cancelled
থাকবে willcancelled_event
যদিও আদিম, সম্ভবত এই প্লাগইন কোডটি সাহায্য করতে পারে? আপনি যদি পরিবর্তে ফিল্টারগুলি দেখতে চান তবে "add_filter" দিয়ে "add_action" স্যুইচ করুন। প্লাগইনটি লোড করুন এবং তারপরে সাইটের হোমপেজটি রিফ্রেশ করুন। একবার লোড হয়ে গেলে এটি নিষ্ক্রিয় করার জন্য মারাত্মক ব্যথা হয়, সুতরাং প্লাগইন ফোল্ডারের নীচে প্লাগইন ফাইলটির নতুন নাম দিন এবং সাইটটিকে আবার রিফ্রেশ করুন - এটি স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় হবে। আমি জিনিসগুলি সমস্যা সমাধান করতে বা এমন কোনও জায়গা খুঁজে পেতে যেখানে আমি কিছু সন্নিবেশ করতে পারি তার জন্য আমি এই কৌশলটি অনেক সময় ব্যবহার করেছি।
<?php
/*
Plugin Name: Hooks
Plugin URI: http://example.com/
Description: Hooks
Version: 1.00
Author: Hooks
Author URI: http://example.com/
*/
add_action('all','hook_catchall');
function hook_catchall(&$s1 = '', &$s2 = '', &$s3 = '', &$s4 = '') {
echo "<h1>1</h1>\n";
print_r($s1);
echo "<br />\n";
echo "<h1>2</h1>\n";
print_r($s2);
echo "<br />\n";
echo "<h1>3</h1>\n";
print_r($s3);
echo "<br />\n";
echo "<h1>4</h1>\n";
print_r($s4);
echo "<br />\n";
return $s1;
}
আমি এইগুলি হুকের ক্রম সন্ধান করতে ব্যবহার করি। পেতে filters
শুধু পরিবর্তন add_action
করতে add_filter
।
function echo_all_hooks() {
$not_arr = array('gettext','sanitize_key','gettext_with_context','attribute_escape');
if(!in_array(current_filter(),$not_arr)) echo current_filter()."<br/>";
}
add_action('all','echo_all_hooks');
@ কাইজার পরামর্শ হিসাবে কেবলমাত্র লিঙ্কগুলি পোস্ট করবেন না আমি এটি উন্নত করছি। তবে এখানে পুরো কোডটি ব্যবহার করা সম্ভব নয় তাই আমি এখানে কয়েকটি চিত্র ব্যবহার করছি যাতে এটি বর্ণনা করার সাথে ওয়ার্ডপ্রেস হুকের জন্য কীভাবে একটি সম্পূর্ণ তালিকা রয়েছে। আপনি এখানে হুক , ক্লাস , ফাংশন , প্লাগিন ,
প্রতিটি বর্ণনা
আপনি কেবল একটি কোয়েরি মনিটরের প্লাগইন ব্যবহার করতে পারেন: https://wordpress.org/plugins/query-monitor/