自定义函数上的自定义插件中的Wordpress admin_init会引发致命错误

时间:2015-12-18 10:43:26

标签: php wordpress

有点奇怪,但真的是可问的问题。我正在创建一个自定义的QuickBook Oauth插件。我通过管理仪表板激活了插件,但插件中定义的函数没有加载到do_action函数上,而是引发致命错误

Fatal error: Call to undefined function is_rtl() in D:\xamp\htdocs\projectmanager\wp-includes\general-template.php on line 2616

这是我的插件代码

<?php
/**
 * Plugin Name: Oauth Quick Book
 * Plugin URI: https://www.test.com
 * Description: Authenticate to QuickBook and send/receives data
 * Version: 0.1.0
 * Author: Myname here
 * Author Uri: https://www.mysitehere.com
 * License: GPL-2.0+
 */
do_action('admin_init', 'authenticate');
function authenticate() {
            var_dump($_GET);exit;
        if(isset($_GET['app_token']))
        {
            if(current_user_can('cpm_super_admin'))
            {
                $app_token = $_GET['app_token'];
                $oauth_consumer_key = $_GET['consumer_key'];
                $oauth_consumer_secret = $_GET['consumer_secret'];
                $token = $_GET['app_token'];

                if(isset($oauth_consumer_secret) && $oauth_consumer_secret != null && $oauth_consumer_key != null && $app_token != null) 
                {

                    if ( ! add_post_meta( 1000011, 'oauth_request_token', $oauth_consumer_key, true ) ) { 
                       update_post_meta ( 1000011, 'oauth_request_token', $oauth_consumer_key );
                    }

                    if ( ! add_post_meta( 1000012, 'app_token', $token , true ) ) { 
                       update_post_meta ( 1000012, 'app_token', $token  );
                    }

                    if ( ! add_post_meta( 1000013, 'oauth_request_token_secret', $oauth_consumer_secret, true ) ) { 
                       update_post_meta ( 1000013, 'oauth_request_token_secret', $oauth_consumer_secret );
                    }

                    require_once (plugin_dir_path(__FILE__).'quickbooks-php/docs/partner_platform/example_app_ipp_v3/index.php');
                } else
                {
                    // require_once (plugin_dir_path(__FILE__).'quickbooks-php/docs/partner_platform/example_app_ipp_v3/index.php');
                }
            }
        }
}

当我删除do_action函数时,它不会抛出任何错误。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您不应该使用do_action,因为 执行 操作。请改用add_action将您的函数附加到admin_init操作:

add_action('admin_init', 'authenticate');

这样,它会在管理员初始化时在正确的时间调用,因此只有当用户访问管理区域时才会触发此挂钩(admin_init)。如果您希望函数在每次加载页面时执行,请使用init挂钩,或者如果您希望仅在用户登录时执行,请使用wp_login挂钩。