WordPress : Comprendre comment les crochets WordPress sont appelés

Publié par Jean-Michel le

Voici comment mon exemple actuel de hook d’action : il modifie la méta description de la page HTML.

add_action( 'wp_head', 'add_a_description' );

  function add_a_description () {
    echo '<meta name="description" content=" This is new content" />' . "
";

  } // End example

Maintenant, pour moi (j’ai quelques connaissances de base en PHP, rien de plus), il semble que la fonction soit appelée avant d’être créée. Mon intuition me dit que ça devrait ressembler à :

      function add_a_description () {
        echo '<meta name="description" content=" This is new content" />' . "
    ";}

  add_action( 'wp_head', 'add_a_description' );  // End example

Je comprends que ce n’est pas le cas, mais je ne sais pas pourquoi. Quelqu’un pourrait-il m’expliquer?

Solution n°1 trouvée

Peu importe où vous écrivez le crochet d’action, les deux fonctionneront :

add_action( 'wp_head', 'add_a_description' );

function add_a_description () {
    echo '<meta name="description" content=" This is new content" />' . "";
} 

et

function add_a_description () {
    echo '<meta name="description" content=" This is new content" />' . "";
} 

add_action( 'wp_head', 'add_a_description' );  // End example

Ces deux fonctionneront. Peu importe où vous déclarez la fonction, la seule chose est que la fonction doit être incluse dans le script.

C’est parce que le whole file is first parsed and then executed.

À partir du manuel PHP

Les fonctions n’ont pas besoin d’être définies avant d’être référencées, sauf lorsqu’une fonction est définie de manière conditionnelle.

Concernant le wp_headcrochet d’action. La wp_headfonction réside à l’intérieurwp-includes/general-template.php

Si vous regardez cette fonction, elle appellerado_action('wp_head');

Ce que cela fait, c’est qu’il vérifiera toutes les actions et tous les filtres définis avec le crochet wp_head qui est stocké dans la variable globale $wp_actions

S’il y a un hook pour wp_head, il appellera la fonction hookée en utilisant call_user_func_array

J’espère que cela vous aidera 🙂

Solution n°2 trouvée

Sans connaître tous les rouages ??internes, vous pouvez penser add_action()à une fonction simple qui transmet le nom d’une fonction à appeler à un certain point. Dans votre code, add_action()permet au système de savoir qu’il doit appeler la fonction add_a_description()lorsqu’il atteint le wp_headpoint.

Voici un exemple TRÈS basique du fonctionnement du code :

// Start of example system
$actions = array();

function add_action($point, $name) {
  global $actions;
  $actions[$point][] = $name;
}

function run($point) {
  global $actions;
  foreach ($actions[$point] as $name)
    $name();
}
// End of example system

// Start of example plugin / theme function
add_action('wp_head', 'alert');
function alert() {
  echo 'hello';
}
// End of example plugin / theme function

// At point wp_head
run('wp_head');

Solution n°3 trouvée

Peu importe où vous écrivez le crochet d’action, les deux fonctionneront :

add_action( 'wp_head', 'add_a_description' );

function add_a_description () {
    echo '<meta name="description" content=" This is new content" />' . "";
} 

et

function add_a_description () {
    echo '<meta name="description" content=" This is new content" />' . "";
} 

add_action( 'wp_head', 'add_a_description' );  // End example

Ces deux fonctionneront. Peu importe où vous déclarez la fonction, la seule chose est que la fonction doit être incluse dans le script.

C’est parce que le whole file is first parsed and then executed.

À partir du manuel PHP

Les fonctions n’ont pas besoin d’être définies avant d’être référencées, sauf lorsqu’une fonction est définie de manière conditionnelle.

Concernant le wp_headcrochet d’action. La wp_headfonction réside à l’intérieurwp-includes/general-template.php

Si vous regardez cette fonction, elle appellerado_action('wp_head');

Ce que cela fait, c’est qu’il vérifiera toutes les actions et tous les filtres définis avec le crochet wp_head qui est stocké dans la variable globale $wp_actions

S’il y a un hook pour wp_head, il appellera la fonction hookée en utilisant call_user_func_array

J’espère que cela vous aidera 🙂

Solution n°4 trouvée

Sans connaître tous les rouages ??internes, vous pouvez penser add_action()à une fonction simple qui transmet le nom d’une fonction à appeler à un certain point. Dans votre code, add_action()permet au système de savoir qu’il doit appeler la fonction add_a_description()lorsqu’il atteint le wp_headpoint.

Voici un exemple TRÈS basique du fonctionnement du code :

// Start of example system
$actions = array();

function add_action($point, $name) {
  global $actions;
  $actions[$point][] = $name;
}

function run($point) {
  global $actions;
  foreach ($actions[$point] as $name)
    $name();
}
// End of example system

// Start of example plugin / theme function
add_action('wp_head', 'alert');
function alert() {
  echo 'hello';
}
// End of example plugin / theme function

// At point wp_head
run('wp_head');

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *