web-dev-qa-db-fra.com

malentendu avec la fonction add_filter ()

J'étudie le thème "une page" et il y a le code suivant:

function onepage_sections() {
$sections = array();

$sections['service_section'] = array(
    'id' => 'service_section',
    'label' => __('Service Section', 'one-page'),
    'callback' => 'onepage_service_section',
);

$sections['blog_section'] = array(
    'id' => 'blog_section',
    'label' => __('Blog Section', 'one-page'),
    'callback' => 'onepage_blog_section',
);

return apply_filters('onepage_sections', $sections);
}

D'après ce que j'ai lu, la fonction apply_filters crée une balise (un nom de clé accessible ultérieurement) et un contenu susceptible de changer à chaque fois que quelqu'un utilise add_filter(key_name, function_to_alter_content_in_key_name). Correct?

Ce que je ne comprends pas, c'est que dans ce thème, il n'y a pas d'appel à add_filter ('onepage_sections'). Il est simplement déclaré dans l'appel précédent à apply_filters. Quelqu'un pourrait-il clarifier le concept de ces fonctions?

2
Selhar
add_filter ( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

Accrochez une fonction ou une méthode à une action de filtrage spécifique.

WordPress propose des crochets de filtre permettant aux plug-ins de modifier divers types de données internes au moment de l'exécution.

Un plugin peut modifier des données en liant un rappel à un hook de filtre. Lorsque le filtre est appliqué ultérieurement, chaque rappel lié est exécuté par ordre de priorité et se voit donner la possibilité de modifier une valeur en renvoyant une nouvelle valeur.

L'exemple suivant montre comment une fonction de rappel est liée à un crochet de filtre.

Notez que $ exemple est passé au callback, (peut-être) modifié, puis retourné:

function example_callback( $example ) {
    // Maybe modify $example in some way.
    return $example;
}
add_filter( 'example_filter', 'example_callback' );

Les rappels liés peuvent accepter de zéro au nombre total d'arguments passés en tant que paramètres dans l'appel apply_filters() correspondant.

En d'autres termes, si un appel apply_filters() passe quatre arguments au total, les rappels qui lui sont liés ne peuvent en accepter aucun (identique à 1) des arguments ou jusqu'à quatre. L'important est que la valeur $accepted_args doit refléter le nombre d'arguments que le rappel lié a effectivement accepté. Si aucun argument n'a été accepté par le rappel, il est considéré comme identique à l'acceptation d'un argument. Par exemple:

// Filter call.
$value = apply_filters( 'hook', $value, $arg2, $arg3 );

// Accepting zero/one arguments.
function example_callback() {
    ...
    return 'some value';
}
add_filter( 'hook', 'example_callback' ); // Where $priority is default 10, $accepted_args is default 1.

// Accepting two arguments (three possible).
function example_callback( $value, $arg2 ) {
    ...
    return $maybe_modified_value;
}
add_filter( 'hook', 'example_callback', 10, 2 ); // Where $priority is 10, $accepted_args is 2.

Remarque: La fonction retournera la valeur true, que le rappel soit valide ou non. C'est à vous de prendre soin. Ceci est fait à des fins d'optimisation, donc tout est aussi rapide que possible.

0
Owais Alam