传递信息的最佳方式是什么functions.php
到插件?
我需要让用户能够从他们的functions.php
文件到我的插件。(它可以是任何数据,只是我可以检查的数据;它可以是变量的值,甚至可以是设置了变量或定义了函数的事实。)
我尝试了以下建议:
Pass A Value From Outside To A Plugin Variable
我一字不差地插入了代码:
在插件上:
$value = 0;
$value = apply_filter(\'get_value_from_function\', $value);
然后打开
functions.php
add_filter(\'get_value_from_function\', \'my_special_value_treatment\', 10, 1);
function my_special_value_treatment ($value){
return 1;
}
但这会导致一个错误:
致命错误:调用/pathtomyplugin/my plugin name/my plugin name中未定义的函数apply\\u filter()。php第93行
我不明白为什么会失败。最好的方法是什么?
使用此添加编辑:
将其更改为后apply_filters()
, 这种情况仍在发生。。。在我的插件中:
$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
最合适的回答,由SO网友:webtoure 整理而成
插件加载在主题之前,这意味着apply_filters
不会向其注册任何实际回调。相反,您需要致电apply_filters
加载主题后的某个时间。类似这样:
/* 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;
}