Я пытаюсь интегрировать функции WP во внешний файл php.
Проблема в том, что такие функции аутентификации пользователя и логина, как is_user_logged_in()
, is_admin()
и т.д. не работает вообще. Однако функции Post работают правильно.
Итак, это должно быть «сессияпроблема
На самом деле, после глубокого глубокого поиска, единственная «хорошая» публикация в Интернете о проблеме — это следующая старая запись в поддержке WP: https://wordpress.org/support/topic/how-to-integrate-sessionlogin-authentication-to-non-wordpress-pages-w-wp-auth
Но это решение не работает вообще, и если я включу root Cookie
плагин, я не могу даже войти в мой / wp-блог /
Итак, есть ли идея, как интегрировать функции входа в php-файл?
Код довольно прост:
file.php
<?php
//define('WP_USE_THEMES', false);
//include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-load.php');
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-blog-header.php');
if ( is_user_logged_in() ) {
echo 'logged in.';
} else {
echo 'NOT logged in.';
}
?>
Кроме того, у меня есть следующее предупреждение в моих журналах ошибок
Предупреждение PHP: session_start (): не удается отправить ограничитель кэша сеанса —
заголовки уже отправлены (вывод начался с /…./) в
/……/wp-content/plugins/global-content-blocks/global-content-blocks.php
по линии 302
Редактировать:
Я добавляю function.php
как сказал Рневиус в комментариях
Код:
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-blog-header.php');
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-includes/functions.php');
и я имею
следующее фатальное предупреждение и фатальная ошибка:
Предупреждение PHP: session_start (): не удается отправить ограничитель кэша сеанса —
заголовки уже отправлены (вывод начался с /…./) в
/……/wp-content/plugins/global-content-blocks/global-content-blocks.php
по линии 302Неустранимая ошибка PHP: невозможно повторно объявить mysql2date () (ранее объявлено)
в /…../wp-includes/functions.php:26) в
/……/wp-includes/functions.php в строке 42
Редактировать:
Кроме того, я уже попробовал это со всем следующим:
define('WP_USE_THEMES', false);
//include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-load.php');
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-blog-header.php');
а также
define('WP_USE_THEMES', false);
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-load.php');
//include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-blog-header.php');
Редактировать:
Это может помочь думать идеи:
У нас есть следующая структура:
domain.com/test/
domain.com/wp-blog/
domain.com/wp-blog/test/
Если файл file.php
если в /test/
Это не работает
domain.com/test/file.php
domain.com/wp-blog/
domain.com/wp-blog/test/
Если файл file.php
находится в /wp-blog/
Это работает!!
domain.com/test/
domain.com/wp-blog/file.php
domain.com/wp-blog/test/
Если файл file.php
находится в /wp-blog/test/
Это работает!!
domain.com/test/
domain.com/wp-blog/
domain.com/wp-blog/test/file.php
Каждая папка на «домене» имеет 755 и файлы 644 разрешения. Так что это не проблема «разрешения». какие-нибудь другие мысли?
Вам не хватает переменной, которая останавливает загрузку всего вывода:
//Load startup
define('WP_USE_THEMES', false);
require_once( $_SERVER[ "DOCUMENT_ROOT" ] . "/wp-blog-header.php" );
Других решений пока нет …