Question

Où puis-je trouver une liste de tous les crochets de WordPress et fonctions sur-ridable (Pluggable, scriptable, etc.)?

Edit: Plugin est énumérés ici .

Était-ce utile?

La solution

@Arlen: Comme Keith S souligne Liste des crochets d'Adam Brown est la ressource des crochets pour defacto WordPress. Cependant, il est pas parfait:

  • Il ne montre pas les crochets afin de quand ils sont appelés,
  • Il ne fournit pas le nom du fichier ou le numéro de ligne où invoqué,
  • Il ne fournit pas un certain nombre d'arguments passés,
  • Il est pas une liste complète parce que certains crochets peuvent être appelés dynamiquement,
  • Et il ne montre pas de crochets de plug-ins.

Ainsi, alors que la liste d'Adam est une excellente ressource en particulier pour comprendre quand les crochets ont été historiquement ajoutés, il est loin d'être aussi utile que si vous étiez en mesure d'instrumenter les crochets sur une page donnée sur votre propre site.

Je l'ai été à jouer avec cette idée pendant un certain temps pour que votre question m'a déclenché pour écrire un plug-in appelé « Crochets Instrument pour WordPress « . Vous pouvez trouver le la source complète ci-dessous la capture d'écran et peut vous pouvez également le télécharger essentiel ici .

Alors, voici une capture d'écran de ce que l'apparence d'instrumentation comme:

Capture d'écran de crochets Instrument pour WordPress Plugin en action

Vous déclenchez l'instrumentation en utilisant le paramètre URL instrument=hooks, i.e.:.

  

http://example.com?instrument=hooks

Et comme promis, voici la source (ou le télécharger .):

<?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;
        }
    }
}

Autres conseils

Bar Debug crochets d'action

  

Affiche une liste d'actions pour la demande tiré actuelle. Nécessite la mise au point barre plug-in.

Le Codex a action de référence et Filtre Référence . Adam Brown a créé une base de données crochet qui a tous les crochets dans le code source, et ajoute la documentation des pages wiki , les informations de version et des liens vers le code source. Vous pouvez l'améliorer en écrivant la documentation dans le Codex.

Bien sûr, certains crochets sont dynamiques, en fonction d'autres données. Prenez la fonction 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);
}

Si vous enregistrez un type de poste personnalisé event et un statut de poste personnalisé cancelled, vous aurez un crochet d'action cancelled_event.

Bien que primitive, peut-être ce code plugin peut aider? Switch « add_action » avec « add_filter » si vous voulez regarder les filtres à la place. Chargez le plug-in, puis rafraîchir la page d'accueil du site. Une fois chargé, il est une douleur grave pour désactiver la fonction, si juste Renommez le fichier plug-in sous les plugins dossier et rafraîchir le site à nouveau - il désactive automatiquement. Je l'ai utilisé cette astuce beaucoup de temps pour résoudre les choses ou de trouver un endroit où je peux 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;
}

J'utilise thiss pour trouver l'ordre des crochets. Pour obtenir le changement du filters juste 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');

@kaiser ne suggère poster des liens non seulement je suis l'améliorer. mais il est impossible d'utiliser le code ensemble ici, donc je suis en utilisant quelques images ici pour expliquer comment il une liste complète pour WordPress avec des crochets décrire chacun. vous pouvez le trouver ici pour crochets , cours , fonctions , plugins , entrer image description ici

pour décrire chaque entrer image description ici

Vous pouvez simplement utiliser un plugin moniteur de requête: https://wordpress.org/plugins/query -monitor /

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top