Плагин wordpress → вызов функции undefined wp_get_current_user()
Я пытаюсь получить текущую информацию о пользователе в своем плагине, используя func wp_get_current_user(). Но я получаю
Call to undefined function wp_get_current_user()
По-видимому, это происходит потому, что файл /wp-includes/pluggable
, который содержит эту функцию, не загружается до загрузки плагинов.
Кто-нибудь знает, как получить информацию о пользователе в моем плагине?
Ответы
Ответ 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