WordPress включает («../../../ wp-blog-header»); провал

В настоящее время я работаю над плагином для WordPress с большим количеством файлов .php. Я вижу, что для моего файла AddShift.php мы успешно импортируем заголовок блога, используя следующую строку кода:

include("../../../wp-blog-header.php"); 

Однако, когда я пытаюсь сделать то же самое в моем файле ajax_cal_split.php, я получаю следующую ошибку:

 Warning: include(./wp-blog-header.php) [function.include]: failed to open stream: No such file or directory in /opt/lampp/htdocs/sandboxj/blog/wp-content/plugins/Shifty/ajax_cal_split.php on line 11 Warning: include() [function.include]: Failed opening './wp-blog-header.php' for inclusion (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/sandboxj/blog/wp-content/plugins/Shifty/ajax_cal_split.php on line 11 

Строка 11, конечно, говорит

 include("../../../wp-blog-header.php"); 

Есть ли причина, по которой этот вызов работает в одном .php-файле, а не другой, когда они находятся в одном каталоге?

Да. Я считаю, что WordPress использует механизм безопасности для содержимого в каталоге wp-content, у меня была та же проблема с темами. Обходной путь, который я использовал, состоял в том, чтобы включить абсолютные имена путей.

Это ваше решение, чтобы получить реальный путь в файле плагина

 <?php $scriptPath = dirname(__FILE__); $path = realpath($scriptPath . '/./'); $filepath = explode("wp-content",$path); // print_r($filepath); define('WP_USE_THEMES', false); require(''.$filepath[0].'/wp-blog-header.php'); 

Вы должны попробовать использовать константу WP_PLUGIN_URL, предоставляемую wordpress. Например, вы можете определить фактический URL-адрес плагина следующим образом:

 define('MyPLUGIN_URL', WP_PLUGIN_URL.'/plugin_folder/'); 

а затем использовать его в своих вызовах, например:

 include(MyPLUGIN_URL."wp-blog-header.php"); 

То, как я решаю проблему, извините за поздний ответ, но это может помочь следующим проверять.

он работает, делайте так, как предполагалось, и используйте абсолютный URL-адрес, я использовал

включает в себя ( "в.ч.-контент / Темы / YOUR_THEME / DESIRED_FILE.php");