WordPress: Почему я не могу использовать is_user_logged_in () после инициализации основного класса при инициализации?

У меня есть основной класс для моего плагина. Он создается на init действие. Я думал, что этого будет достаточно, чтобы иметь возможность использовать функции WordPress, такие как is_user_logged_in(), но я получаю фатальную ошибку: вызов неопределенной функции. Ниже мой код (упрощенно). Пожалуйста, смотрите обновление в нижней части этого вопроса.

fd_main.php

<?php
Class Find_Do_For_Anspress{

private function includes(){
require_once(FIND_DO_FOR_ANSPRESS_DIR.'fd_echo.php');
}

}//End class

function find_do_for_anspress() {
$FDClassStart = new Find_Do_For_AnsPress();

}
add_action('init', 'find_do_for_anspress');

?>

fd_echo.php

<?php
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
echo $current_user;
} else {
echo 'Not logged in!';
}

?>

Ошибка: Fatal error: Call to undefined function is_user_logged_in() in /home/effilxhy/public_html/WP/wp-content/plugins/find-do-for-anspress/fd_echo.php on line 1


На основании предоставленного ответа:

//This returns 'exist'. This is outside the main class on the same script.
function test_fn() {
if ( function_exists('is_user_logged_in') )
echo 'exists';
else
echo 'doesnt exist';
}
add_action('init', 'test_fn');//This returns 'doesn't exist'. Why doesn't this work?
function test_fn() {
if ( function_exists('is_user_logged_in') )
echo 'exists';
else
echo 'doesnt exist';
}

test_fn();

Так что я думаю, что нашел что-то убедительное, но я не уверен, что с этим делать. Я определял функцию внутри класса. Я создавал класс с init, wp_head, а также wp_loaded, я бегал Find_Do_For_Anspress::test_fn(); сразу после определения класса. Это не сработало. Однако, когда я запускаю Find_Do_For_Anspress :: test_fn (); внутри одного из включенных файлов он возвращает «существует», поэтому он работает. Я попробовал все вышеупомянутые действия, чтобы создать экземпляр моего класса, и все они работали. Почему это? Разница заключалась в том, что функция выполнялась под моим определением класса, а не во включенном файле.

1

Решение

Вы пытались разместить код непосредственно внутри класса, не используя require_once?

Также я думаю require_once включает файл только при первом создании класса.

Я не думаю, что проблема в том, что функция подключаема. Следующий код выводит: «существует»

function test_fn() {
if ( function_exists('is_user_logged_in') )
echo 'exists';
else
echo 'doesnt exist';
}
add_action('init', 'test_fn');
1

Другие решения

Попробуйте следующим образом ..

add_action( 'wp_head', 'check_user_login' );

function check_user_login() {

if ( is_user_logged_in() ) {
echo 'You are in login state';
} else {
echo 'Sorry..!';
}

}

пожалуйста, проверьте список подключений

1

По вопросам рекламы [email protected]