我想尝试从front end private messages plugin 在我的自定义模板中。但这表明该函数不存在。但该功能在插件中运行良好。
我该怎么办?
我想尝试从front end private messages plugin 在我的自定义模板中。但这表明该函数不存在。但该功能在插件中运行良好。
我该怎么办?
未定义函数错误可能有多种原因:
插件加载其函数定义的时间可能晚于template_include
或仅在管理后端。
例如,如果插件使用namespace, 但您调用的函数没有该名称空间。或者函数实际上是一个类方法,您将其视为函数…
另一个问题是:为什么要直接调用该函数?模板应该具有尽可能少的依赖关系。假设有人在插件中发现安全问题,您必须将其关闭。您真的要编辑所有模板文件吗?可能不会。:)
最好不要将该依赖项放在模板之外,而是调用自定义操作。例如,在模板中,可以将直接调用替换为操作调用:
do_action( \'frontend.message\' );
在您的主题中functions.php
, 为该操作注册回调:add_action( \'frontend.message\', \'my_frontend_message\' );
function my_frontend_message()
{
if ( ! function_exists( \'plugin_frontend_message\' ) ) {
// Show debug info for those who can do something about it.
if ( current_user_can( \'manage_option\' ) ) {
print \'<p class="error">Function plugin_frontend_message() not found.</p>\';
}
return;
}
print plugin_frontend_message();
}
如果你现在关闭插件,不会有什么不好的事情发生,你的访问者只会看到一条消息而什么也看不到。检查插件文档(现在了解更多关于函数的信息),而不是检查函数是否是静态的,您可以使用
ClassName::FunctionName
global $plugin_name_object;
$plugin_name_object->my_function();
obj = new Plugin();
$obj->my_function();
我很难让插件正常工作Virtual Pages (WordPress插件可简化虚拟页面的创建)我确实进行了编辑,根据查询创建了一个循环。add_action( \'gm_virtual_pages\', function( $controller ) { /* Creating virtuals pages for companies */ $args = array( \'post_type\' => array(\'companies\',), \'post_status\'