плагин wordpress -> вызов неопределенной функции wp_get_current_user () - PullRequest
25 голосов
/ 25 мая 2011

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

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

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

Ответы [ 9 ]

40 голосов
/ 25 мая 2011

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

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

Пример:

add_action('init','do_stuff');
function do_stuff(){
  $current_user = wp_get_current_user();
  // ...
}
16 голосов
/ 25 мая 2011

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

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

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

4 голосов
/ 16 апреля 2015

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

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

вместе с

require_once(ABSPATH.'wp-includes/pluggable.php');
4 голосов
/ 24 декабря 2013

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

0 голосов
/ 10 декабря 2018

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

НЕ wp-includes, но:

include_once(ABSPATH . "wp-admin/includes/plugin.php");
0 голосов
/ 06 сентября 2017

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

0 голосов
/ 30 июля 2017

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

include_once(ABSPATH . 'wp-includes/pluggable.php');
0 голосов
/ 07 февраля 2014

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

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

require_once('pluggable.php');
...