簡體   English   中英

使用do_action時出現“未定義函數wp_get_current_user()的調用”錯誤

[英]Getting 'Call to undefined function wp_get_current_user()' error when do_action is used

請注意,創建此問題是為了避免global $plugin_name;


我正在寫一個WordPress(WP 3.6)插件,我得到了

wp_get_current_user() in /var/www/wordpress/wp-includes/capabilities.php on line 1281, referer: http://10.1.1.6/wp-admin/admin.php?page=mhomepage/mhomepage_admin_menu.php如果使用)此代碼

$plugin_name='mhomepage';

// Hook for adding admin menus
add_action('admin_menu', 'add_plugin_admin_page', 10, 1);
do_action('admin_menu', $plugin_name.'/mhomepage_admin_menu.php');

// add_action('admin_menu', 'add_plugin_admin_page');

function add_plugin_admin_page($plugin_name) {
    // global $plugin_name;

    //must check that the user has the required capability 
    if (!current_user_can('manage_options'))
    {
      wp_die( __('You do not have sufficient permissions to access this page.') );
    }

    add_menu_page( 'mHomePage', 'mHomePage', 'manage_options', 'mhomepage/mhomepage_admin_menu.php', '', '', 6 );
    // add_menu_page( 'mHomePage', 'mHomePage', 'manage_options', $plugin_name, '', '', 6 );
}

mhomepage_admin_menu.php樣子

<?php

    echo "Plugin menu page";

?>

但是如果我使用add_action('admin_menu', 'add_plugin_admin_page'); 在上面的代碼中而不是

// add_action('admin_menu', 'add_plugin_admin_page', 10, 1);
// do_action('admin_menu', $plugin_name.'/mhomepage_admin_menu.php');

一切正常嗎? 有人可以解釋發生的原因,原因以及解決方案嗎? 我想使用do_action將參數傳遞給add_plugin_admin_page函數。

我找到了這個答案https://stackoverflow.com/a/6127607/250422,但我不確定它是否也適用於我的情況,我真的不明白該怎么辦。

如果您想將參數傳遞給函數,請嘗試此操作

// Hook for adding admin menus
add_action('admin_menu', 'add_plugin_admin_page', 10, 1);
do_action('admin_menu', $plugin_name);

您正在創建的第一行操作已告訴您要掛接到WordPress函數中。 第二行是帶有參數的操作。

do_action()

編輯

由於將參數添加到默認的WordPress操作掛鈎可能不明智。 讓我們嘗試以其他方式將其分開。

創建自己的鈎子

add_action( 'admin_menu', 'add_plugin_admin_page', 10, 1 );
add_action( 'plugin_admin_page', 'plugin_admin_page_arguments' );

function plugin_admin_page_arguments() {
  $plugin_name = 'Hello World'; // Your argument
  do_action('plugin_admin_page', $plugin_name);
}

然后您的管理頁面功能及其參數

function add_plugin_admin_page($plugin_name) {
  echo $plugin_name;
}

這未經測試,但應該可以給您一個提示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM