如何在自定义模板中调用插件函数

时间:2017-08-23 作者:Priyanka Singh

我想尝试从front end private messages plugin 在我的自定义模板中。但这表明该函数不存在。但该功能在插件中运行良好。

我该怎么办?

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

未定义函数错误可能有多种原因:

插件加载其函数定义的时间可能晚于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();
}
如果你现在关闭插件,不会有什么不好的事情发生,你的访问者只会看到一条消息而什么也看不到。

SO网友:Sebastian Kurzynowski

检查插件文档(现在了解更多关于函数的信息),而不是检查函数是否是静态的,您可以使用

ClassName::FunctionName

  • 如果没有,请检查插件是否添加了全局对象

    global $plugin_name_object; $plugin_name_object->my_function();

    new object 并调用此函数。

    obj = new Plugin(); $obj->my_function();

  • 结束

    相关推荐

    Virtual Pages plugins

    我很难让插件正常工作Virtual Pages (WordPress插件可简化虚拟页面的创建)我确实进行了编辑,根据查询创建了一个循环。add_action( \'gm_virtual_pages\', function( $controller ) { /* Creating virtuals pages for companies */ $args = array( \'post_type\' => array(\'companies\',), \'post_status\'