wake-up-neo.net

Übergebe Informationen von functions.php an das Plugin

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
1
hommealone

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;
}
2
webtoure

Dies ist die richtige Methode - außer die Funktion ist apply_filters, nicht apply_filter. Daher dein Fehler.

0
vancoder