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


Wordpress admin_init in custom plugin on a custom function throws fatal error

这有点奇怪,但确实是一个可以问的问题。我正在创建一个自定义的QuickBookOauth插件。我通过管理面板激活了插件,但插件中定义的函数没有加载到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函数时,它不会抛出任何错误。如有任何帮助,我们将不胜感激。

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

add_action('admin_init', 'authenticate');

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