it-swarm.com.ru

Не могу загрузить WP функция во внешнюю функцию

Я создал веб-сайт книжного магазина и получил функцию заголовка, нижнего колонтитула и меню входа на моей первой странице.

Все функции объявлены в functions.php и подключены к хукам.

Моя первая страница работает правильно.

Но я пытаюсь вызвать файл меню регистрации из одного из моих вариантов меню входа в систему (файл page-non-member.php) и использовать заголовок с первой страницы в качестве заголовка на этой странице.

Я пытаюсь использовать это:

require( dirname( __FILE__ ) . '../wp-load.php' );
if ( function_exists( 'get_template_part' ) ) {
    echo "get_template_part found";
}
get_template_part( 'mybookshop', 'header' );  

или это:

do_action( 'create_header_html', 'Make registration' );

Но в обоих случаях я получил следующее сообщение

Предупреждение: требуется (W:\domains\wpfolder\wp-content\themes\mybookshop ../ wp- load.php): не удалось открыть поток: Нет такого файла или каталога в W:\domains\wpfolder\wp-content\темы\mybookshop\page-not-member.php в строке 4

Неустранимая ошибка: require (): Не удалось открыть обязательный файл 'W:\domains\wpfolder\wp-content\themes\mybookshop ../ wp-load.php' (include_path = '.; w: /modules/php/PHP-5.6 ; w: /modules/php/PHP-5.6/PEAR/pear ') в W:\domains\wpfolder\wp-content\themes\mybookshop\page-not-member.php в строке 4 ".

Structure of my folders:
-- WordPress root directory
 |-- file wp-load.php
 |
 ....
 |
 -- my site(bookshop) root directory
 |-- header.php,header.php, page-home-page.php, page-not-member.php, etc
 |
  ....

Я использую локальный сервер (OpenServer). В чем проблема и как я могу ее решить?

1
adrian

Прежде всего, не делай этого. Включение движка WordPress в некоторый внешний файл PHP вообще не рекомендуется. У него больше минусов, чем минусов.

Если вы хотите получить доступ к функциям WordPress, создайте файл PHP внутри папки темы или создайте плагин. Вы даже можете создать запрос AJAX, если вам действительно нужен прямой доступ к некоторым данным по URL.

Теперь о вашей ошибке. Похоже, вы пытаетесь включить wp-load.php из одного из файлов вашей темы. Если это так, то в этом нет необходимости. Файлы темы уже имеют доступ к функциям WordPress. Просто удалите require... и все будет в порядке.

Допустим, по неизвестным причинам они этого не делают, и вы ДОЛЖНЫ включить wp-load.php. Этот файл существует в корневой папке вашей установки, и вы должны вернуться 3 раза, чтобы включить его. Так это будет выглядеть так:

../../../wp-load.php

Еще раз, пожалуйста, не делайте этого. Это не хорошая практика.

2
Jack Johansson