Quel est le meilleur moyen de transmettre certaines informations de functions.php
à un plugin?
Je dois donner à un utilisateur la possibilité depasserune donnéedeleur fichier functions.php
àmon plugin. (Ce peut être n'importe quelle donnée, juste quelque chose que je peux vérifier; cela peut être une valeur de variable, ou même le fait qu'une variable a été définie ou qu'une fonction a été définie.)
J'ai essayé la suggestion trouvée ici:
Passer une valeur de l'extérieur à une variable de plugin
J'ai branché ce code mot pour mot:
Sur votre plugin:
$value = 0;
$value = apply_filter('get_value_from_function', $value);
Puis sur functions.php
add_filter('get_value_from_function', 'my_special_value_treatment', 10, 1);
function my_special_value_treatment ($value){
return 1;
}
Mais cela entraîne une erreur:
Erreur fatale: appel de la fonction non définie apply_filter () dans /pathtomyplugin/my-plugin-name/my-plugin-name.php à la ligne 93
Je ne comprends pas pourquoi cela échoue. Quelle est la meilleure façon de procéder?
Edité avec cet ajout:
Après le changer pour apply_filters()
, cela se produit encore ... Dans mon plugin:
$value = 0;
$value = apply_filters('get_value_from_function', $value);
if ($value===0) {
$test_info = 'not_passed';
} else {
$test_info = 'passed';
};
// $test_info is not_passed
Les plugins sont chargés avant le thème, ce qui signifie que votre apply_filters
ne contiendra aucun rappel réel. Au lieu de cela, vous devez appeler votre apply_filters
après le chargement du thème. Quelque chose comme ça:
/* Your plugin's file: */
add_action( 'init', 'my_lovely_funky_filters' );
function my_lovely_funky_filters() {
/* Fire our callbacks */
$value = 0;
$value = apply_filters( 'get_value_from_function', $value );
/* Check your $value now */
/* echo "<pre>{$value}</pre>"; */
}
/* Your functions.php file */
add_filter( 'get_value_from_function', 'my_special_value_treatment', 10, 1 );
function my_special_value_treatment( $value ) {
/* A little more interesting */
return (int)$value + 1;
}
C'est la bonne méthode - sauf que la fonction est apply_filters
, pas apply_filter. D'où votre erreur.