it-swarm.com.de

Ü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