WP is_user_logged_in () не работает на интегрированном сайте

Я пытаюсь интегрировать функции 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 разрешения. Так что это не проблема «разрешения». какие-нибудь другие мысли?

2

Решение

Вам не хватает переменной, которая останавливает загрузку всего вывода:

//Load startup
define('WP_USE_THEMES', false);
require_once( $_SERVER[ "DOCUMENT_ROOT" ] . "/wp-blog-header.php" );
0

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

Других решений пока нет …

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