web-dev-qa-db-fra.com

Quel est le message "publié"?

Je serais reconnaissant si quelqu'un pouvait signaler un lien. Je comprends que cela peut avoir une réponse très longue, mais j’ai cherché et je n’ai trouvé aucune ressource.

Sinon, il serait également agréable que quelqu'un puisse simplement indiquer l'ordre dans lequel les hameçons sont déclenchés. Je suis sûr qu'il n'y en aura pas beaucoup car je ne suis préoccupé que par les posts "publiés".

Merci d'avance.

3
BAU

Que voulez-vous dire exactement par "publié"?

Une chose que vous pouvez essayer est la suivante:

http://planetozh.com/blog/my-projects/wordpress-hooks-filter-flow/

Le script s'exécute dans votre racine WordPress (ou dans/wp-admin/si vous préférez) et énumère les filtres chargés dans votre blog. Les crochets sont affichés par ordre alphabétique et, pour chaque crochet, les filtres actifs (ou les actions identiques) sont listés dans leur ordre d'exécution, défini soit par leur priorité, soit par leur ordre de chargement. Le but d’une telle liste est d’aider à repérer les bugs des plugins et de vous permettre d’affiner les priorités des plugins si nécessaire.

Edit: Je viens de trouver un plugin prometteur pour cette tâche: http://wordpress.org/extend/plugins/wordpress-hook-sniffer/

Vous pouvez également modifier le fichier /wp-includes/plugin.php et consigner tous les points d'ancrage activés dans les fichiers journaux. Il vous suffit ensuite de "publier" un message et de voir quels crochets ont été déclenchés.

Après les modifications que vous devez faire:

// in apply_filters(..)
$log = array();
do {
    foreach( (array) current($wp_filter[$tag]) as $the_ )
        if ( !is_null($the_['function']) ){
            $args[1] = $value;
            $log[] = $the_;
            $value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args']));
        }
} while ( next($wp_filter[$tag]) !== false );
$filename = ABSPATH."/hooks.$tag.log"
file_put_contents($filename,file_get_contents($filename) ."\n". print_r($log,true));

// in apply_filters_ref_array(..)
$log = array();
do {
    foreach( (array) current($wp_filter[$tag]) as $the_ )
        $log[] = $the_;
        if ( !is_null($the_['function']) )
            $args[0] = call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));

} while ( next($wp_filter[$tag]) !== false );
$filename = ABSPATH."/hooks.$tag.log"
file_put_contents($filename,file_get_contents($filename) ."\n". print_r($log,true));


// in do_action(..)
$log = array();
do {
    foreach ( (array) current($wp_filter[$tag]) as $the_ )
        $log[] = $the_;
        if ( !is_null($the_['function']) )
            call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));

} while ( next($wp_filter[$tag]) !== false );
$filename = ABSPATH."/hooks.$tag.log"
file_put_contents($filename,file_get_contents($filename) ."\n". print_r($log,true));

// in do_action_ref_array(..)
$log = array();
do {
    foreach( (array) current($wp_filter[$tag]) as $the_ )
        $log[] = $the_;
        if ( !is_null($the_['function']) )
            call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));

} while ( next($wp_filter[$tag]) !== false );
$filename = ABSPATH."/hooks.$tag.log"
file_put_contents($filename,file_get_contents($filename) ."\n". print_r($log,true));
3
xaedes