web-dev-qa-db-fra.com

Renvoyer des variables dans un modèle

Si je mets une fonction que je veux utiliser dans un modèle, je peux la mettre dans functions.php

function myfunction(){
echo 'My String';
}

add_action('myfunction','myfunction');

et dans un fichier modèle, mettez:

do_action('myfunction');

Cela ne semble fonctionner que si vous écrivez quelque chose à l'écran. Si je voulais renvoyer une variable à la place. Par exemple.

function myfunction(){
return 'My String';
}

$string = do_action('myfunction');

et capturez-le au lieu de l'imprimer. Comment pourrais-je le faire?

2
Jenski

Il y a des filtres pour ça.

Exemple:

add_filter( 'template_filter', 'wpse_102706_filter_callback', 10, 2 );
function wpse_102706_filter_callback( $defaults, $case )
{
    $args = wp_parse_args( array(
        'some_key' => 'some_modified_value'
    ), $defaults );

    return $args
}

Ensuite, dans votre modèle, ajoutez simplement les valeurs par défaut:

apply_filters( 'template_filter', array( 'some_key' => 'default_val' ), 'single' );

Plus d'informations dans le Codex sur l'API des plugins .

1
kaiser