这有点奇怪,但确实是一个可以问的问题。我正在创建一个自定义的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
挂钩。