it-swarm.com.ru

плагин wordpress -> вызов неопределенной функции wp_get_current_user ()

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

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

Кто-нибудь есть идеи о том, как получить данные пользователя в моем плагине?

24
Daithí

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

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

Пример:

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

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

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

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

16
user677607

После установки 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
Benjamin Ziepert

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

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

вместе с 

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

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

Найдите powers.php в каталоге wp-includes (WP 3.8.x) . Добавьте следующее вверху после открывающего тега php:

require_once('pluggable.php');
0
colind

моя проблема решена с этим кодом, пожалуйста 

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

НЕ wp-includes но:

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

Как бы странно это ни звучало, проблема в моем приложении происходила из-за того, что у меня был ФАЙЛ с именем 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>';
        }        
    }
}
0
drjorgepolanco