Подтвердить что ты не робот

Плагин wordpress → вызов функции undefined wp_get_current_user()

Я пытаюсь получить текущую информацию о пользователе в своем плагине, используя func wp_get_current_user(). Но я получаю Call to undefined function wp_get_current_user()

По-видимому, это происходит потому, что файл /wp-includes/pluggable, который содержит эту функцию, не загружается до загрузки плагинов.

Кто-нибудь знает, как получить информацию о пользователе в моем плагине?

4b9b3361

Ответ 1

По-видимому, это происходит потому, что файл /wp -includes/pluggable, который содержит эту функцию, не загружается до загрузки плагинов.

В самом деле. Так что оберните любую вещь, которую вы выполняете в функции, и зацепите ее за плагин plugins_loaded или init. (см. файл wp-settings.php)

Пример:

add_action('init','do_stuff');
function do_stuff(){
  $current_user = wp_get_current_user();
  // ...
}

Ответ 2

Вы можете использовать это,

<?php
if(!function_exists('wp_get_current_user')) {
    include(ABSPATH . "wp-includes/pluggable.php"); 
}
?>

это должно решить вашу проблему:)

Ответ 3

После установки wp 3.8 у меня была та же проблема со страницей, которую я получаю с помощью ajax. Я исправил его следующим кодом:

if(!function_exists('wp_delete_user')) {
    include(ABSPATH . "wp-admin/includes/user.php.");
}

По-видимому, функция перемещается из pluggable.php в user.php. Тем не менее, я не понимаю, почему он не работает после включения wp-blog-header.php.

Ответ 4

попробуйте добавить также

require_once('../../../wp-load.php');

вместе с

require_once(ABSPATH.'wp-includes/pluggable.php');

Ответ 5

Я получил такое же сообщение об ошибке после обновления WP. Исправление, которое сработало для меня, быстро и просто:

Найдите возможности .php в каталоге wp-includes (WP 3.8.x). Добавьте вверху вверх, после открытия php-тега:

require_once('pluggable.php');

Ответ 6

моя проблема решена с помощью этого кода.

include_once(ABSPATH . 'wp-includes/pluggable.php');

Ответ 7

NOT wp-includes но:

include_once(ABSPATH . "wp-admin/includes/plugin.php");

Ответ 8

Как бы странно это ни звучало, проблема в моем приложении происходила из-за того, что у меня был ФАЙЛ с именем menu.php, где у меня был класс для создания меню Wordpress.

Буквально, просто изменив имя ФАЙЛА с menu.php на nav-menu.php, исправили проблему. Я повторил проблему 3 раза, потому что не мог поверить, что имя файла может быть проблемой.

На тот случай, если кто-то захочет узнать, что находится внутри этого файла, вот оно:

class OwNavMenu extends OwCpnt 
{
    function __construct( $location, $args ) {
        $show = $args['show'];
        $span = $args['span'];   

        if ( $show ) {
            $this->menu( $location, $span );
        }     
    }

    function menu( $location, $span ) {
        if ( $location ) {
            echo '<div id="ow-' . $location . '" class="ow-nav ow-' . $location . '">';
                wp_nav_menu(
                    array(
                        'theme_location'  => $location,
                        'link_before'     => ( $span ) ? '<span>'  : '',
                        'link_after'      => ( $span ) ? '</span>' : ''
                    )
                );
            echo '</div>';
        }        
    }
}

Ответ 9

Быстрое исправление include_once(ABSPATH . 'wp-includes/pluggable.php'); добавьте эту строку в свои возможности. php