Où puis-je trouver une liste de tous les points d'ancrage WordPress et de toutes les fonctions superposables (plug-in, scriptable, etc.)?
Edit: Plugin est listé ici .
Où puis-je trouver une liste de tous les points d'ancrage WordPress et de toutes les fonctions superposables (plug-in, scriptable, etc.)?
Edit: Plugin est listé ici .
Réponses:
@Arlen: Comme le souligne Keith S, la liste des crochets d'Adam Brown est la ressource de fait des crochets pour WordPress. Cependant, ce n'est pas parfait:
Ainsi, bien que la liste d'Adam soit une excellente ressource, en particulier pour comprendre quand des points d'ancrage ont été ajoutés, ce n'est pas aussi utile que si vous pouviez instrumenter les points d'ancrage sur une page donnée de votre propre site.
Cela fait quelque temps que je joue à cette idée, alors votre question m'a amené à écrire un plugin appelé " Instrument Hooks for WordPress ". Vous pouvez trouver la source complète ci - dessous la capture d'écran et vous pouvez également la télécharger depuis gist ici .
Alors, voici une capture d'écran de l'instrumentation:
Vous déclenchez l'instrumentation à l'aide du paramètre URL instrument=hooks
, à savoir:
Et comme promis, voici le code source (ou téléchargez-le ici .):
<?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;
}
}
}
Barre de débogage Crochet d'action plugin
Affiche une liste d'actions déclenchées pour la demande en cours. Nécessite le plugin de la barre de débogage.
Le Codex a une référence d'action et une référence de filtre . Adam Brown a créé une base de données de hooks qui contient tous les hooks dans le code source et ajoute la documentation des pages du wiki, des informations sur la version et des liens vers le code source. Vous pouvez l'améliorer en écrivant de la documentation dans le Codex.
Bien sûr, certains hooks sont dynamiques, en fonction d'autres données. Prenez la wp_transition_post_status
fonction:
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);
}
Si vous enregistrez un type de message personnalisé event
et un statut de message personnalisé cancelled
, vous aurez un cancelled_event
crochet d'action.
Bien que primitif, peut-être que ce code de plugin peut aider? Basculez "add_action" avec "add_filter" si vous souhaitez plutôt examiner les filtres. Chargez le plug-in, puis actualisez la page d'accueil du site. Une fois chargé, la désactivation est très pénible. Il vous suffit donc de renommer le fichier plugin situé dans le dossier plugins et d'actualiser le site à nouveau. Il se désactivera automatiquement. J'ai utilisé cette astuce plusieurs fois pour résoudre des problèmes ou trouver un endroit où insérer quelque chose.
<?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;
}
Je l'utilise pour trouver l'ordre des crochets. Pour obtenir le filters
juste changement 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');
Comme @kaiser suggère de ne pas poster que des liens, je l’améliore. mais il n’est pas possible d’utiliser tout le code ici, donc j’utilise peu d’images ici pour expliquer comment il contient une liste complète des points d'ancrage WordPress avec une description. vous pouvez le trouver ici pour les hooks , classes , fonctions , plugins ,
décrire chacun
Vous pouvez simplement utiliser un plugin de moniteur de requête: https://wordpress.org/plugins/query-monitor/