Как определить извне WordPress, зарегистрирован ли посетитель в WordPress

#php #wordpress

#php #wordpress

Вопрос:

С помощью php можно определить, зарегистрирован ли посетитель моего сайта в области WordPress моего сайта.

Под этим я подразумеваю, например, область WordPress моего сайта (на которой есть регистрация) example.com/members/ .

Я хотел бы знать example.com/offers.php , вошли ли они в область WordPress example.com/members .

Комментарии:

1. Я думаю, это поможет вам: wordpress.stackexchange.com/questions/105736 /…

2. Я действительно борюсь. Я перепробовал все, что нашел, чтобы попытаться заставить это работать, но безуспешно. get_current_user_id(); всегда возвращает 0. Проблема, похоже, в том, что мой WordPress находится в папке mydomain.com/members / Я хочу получить доступ через php, чтобы узнать, вошел ли кто-нибудь в систему из php-процедуры в моем корне public_html (routine caled mydomain.com/offers.php )

3. Я нашел различные статьи, в которых говорится, что проблема связана с файлами cookie. Говоря, что я должен добавить в свой wp-config.php define(‘COOKIEPATH’, ‘/’); define(‘SITECOOKIEPATH’,’/’); Я добавил это прямо перед /* Вот и все, прекратите редактирование! Счастливого ведения блога. */ Если я выхожу из системы, я не могу снова войти в систему! Я использую тему плагина «Мой логин», чтобы добавить логин или выход из системы в мое меню навигации.

Ответ №1:

Вы также можете использовать функции WordPress снаружи. Просто включите wp-load.php с вашим путем установки.

используйте get_currentuserinfo() для получения пользовательских данных зарегистрированного пользователя.

 // Include the wp-load'
include('YOUR_WP_PATH/wp-load.php');
if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo(); // to get currently logged in user data
echo 'Username: ' . $current_user->user_login . "n";
echo 'User email: ' . $current_user->user_email . "n";
}else{
   echo "User not logged in";
}
  

Ответ №2:

ХОРОШО, что, похоже, упускается из виду, так это то, что при попытке получить доступ к wordpress из другой папки, в которой установлен WordPress, использование следующего кода не работает … is_user_logged_in() всегда возвращает false .

 <?php
define( 'WP_USE_THEMES', false ); 
Include_once($_SERVER['DOCUMENT_ROOT'] . '/members/wp-load.php');
if ( is_user_logged_in() ) {echo ' You are currently logged in.'. '<br />';}
else
{    echo ' You are currently not logged in.'. '<br />';}
?>
  

Мне удалось найти обходной путь, который, по крайней мере, работает для меня.
Я создавал html-страницу, которая должна была проверить, был ли пользователь зарегистрирован в области WordPress на моем сайте. Итак, что я сделал, это поместил приведенный выше тест в файл, который НАХОДИЛСЯ в папке WordPress. Затем просто использовал IFrame в моем html, который использовал в качестве src = файл, который был в папке wordpress. Затем это отражает то, что было необходимо, в зависимости от того, вошел пользователь в систему или вышел из системы.

Вероятно, неаккуратное решение, но, по крайней мере, оно работает.