Was ist der beste Weg, um Informationen von functions.php
an ein Plugin zu übergeben?
Ich muss einem Benutzer die Möglichkeit geben,ein Datenelementvonseiner functions.php
-Dateianmein Plugin zu übergeben. (Es können beliebige Daten sein, nur etwas, auf das ich prüfen kann; es kann der Wert einer Variablen sein oder sogar die Tatsache, dass eine Variable festgelegt oder eine Funktion definiert wurde.)
Ich habe den hier gefundenen Vorschlag ausprobiert:
Übergebe einen Wert von außerhalb an eine Plugin-Variable
Ich habe diesen Code wörtlich eingefügt:
Auf deinem Plugin:
$value = 0;
$value = apply_filter('get_value_from_function', $value);
Dann auf functions.php
add_filter('get_value_from_function', 'my_special_value_treatment', 10, 1);
function my_special_value_treatment ($value){
return 1;
}
Das führt aber zu einem Fehler:
Schwerwiegender Fehler: Rufen Sie in Zeile 93 die undefinierte Funktion apply_filter () in /pathtomyplugin/my-plugin-name/my-plugin-name.php auf
Ich verstehe nicht, warum das fehlschlägt. Wie geht das am besten?
Mit diesem Zusatz bearbeitet:
Nach dem Ändern auf apply_filters()
passiert dies immer noch ... In meinem 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
Plugins werden vor dem Theme geladen, was bedeutet, dass für Ihren apply_filters
keine tatsächlichen Rückrufe registriert sind. Stattdessen müssen Sie Ihren apply_filters
irgendwann aufrufen, nachdem das Design geladen wurde. Etwas wie das:
/* 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;
}
Dies ist die richtige Methode - außer die Funktion ist apply_filters
, nicht apply_filter. Daher dein Fehler.