有点奇怪,但真的是可问的问题。我正在创建一个自定义的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函数时,它不会抛出任何错误。 任何帮助将不胜感激。
答案 0 :(得分:1)
您不应该使用do_action
,因为 执行 操作。请改用add_action
将您的函数附加到admin_init
操作:
add_action('admin_init', 'authenticate');
这样,它会在管理员初始化时在正确的时间调用,因此只有当用户访问管理区域时才会触发此挂钩(admin_init
)。如果您希望函数在每次加载页面时执行,请使用init
挂钩,或者如果您希望仅在用户登录时执行,请使用wp_login
挂钩。