Как правильно использовать функции WordPress вне файлов WordPress?


59

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

Какой из этих двух методов является правильным? Каковы варианты использования для каждого метода, если оба являются правильными? В чем разница между использованием одного метода или другого?

Способ 1:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-blog-header.php');
?>

Способ 2:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-load.php');
?>

Какие функции WP вы пытаетесь использовать «вне WP» и почему? Любой из этих методов по-прежнему будет загружать среду WP (хотя и без поддержки тем), поэтому вы по- прежнему вызываете функции внутри WP.
EAMann

Я пытаюсь понять разницу между 2 методами. Что я сделаю, так это интегрирую тему WordPress со своим скриптом поддержки. поэтому понадобятся заголовок, нижний колонтитул и цикл из WordPress, а также некоторая поддержка виджетов и других плагинов
alhoseany

Я действительно сомневаюсь, что это то, как вы хотите делать вещи ... есть лучшие решения, чем пытаться запустить сам WordPress.
EAMann

Я широко открыт для предложений, я ищу лучший способ сделать что-то? Каков наилучший способ интеграции WordPress темы с внешним веб-приложением?
alhoseany

Ответы:


58

Есть небольшая разница между файлами. Когда вы просматриваете страницу WordPress, первый файл называется index.php. И это, по сути, ваш «Метод 1:»

define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require ('./wp-blog-header.php');

Заголовочный файл блога (который ставит в очередь остальную часть WordPress) загружается wp-load.phpнапрямую и запускает сам WordPress. Вот большая часть wp-blog-header.php:

if ( !isset($wp_did_header) ) {

    $wp_did_header = true;

    require_once( dirname(__FILE__) . '/wp-load.php' );

    wp();

    require_once( ABSPATH . WPINC . '/template-loader.php' );

}

Так что разница между вашими двумя методами заключается в том ... что загружено.

Метод 1 - это именно то, что WordPress делает для загрузки самого себя (за исключением отключения тем). Так что если вам нужен весь WordPress и вы хотите запустить все стандартные хуки / действия, следуйте по этому пути.

Метод 2 - это еще один шаг вниз по линии. Он загружает все WordPress, но не вызывает wp()и не вызывает загрузчик шаблонов (используется темами). Метод 2 будет немного легче, но даст вам ту же функциональность.


3
Есть ли схема или что-то, что отображает все эти файлы? Я видел один давным-давно, но я не могу его найти.
ninja08

17

Способ 2 из вашего вопроса:

<?php 
define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
require( './wp-load.php' );

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


1
что означает эта первая строка?
Сагив SEO

8
Первая строка сообщает WordPress не загружать все функции поддержки тем. В основном, загружайте меньше файлов.
EAMann

Нужна ли первая строка только для первого метода?
mcont

4

wp-blog-header.php прикрепит статус заголовка, вернет код статуса http 404

wp-load.php не будет

Полезно отметить при использовании ajax, поскольку он проверяет код состояния http


2

Иногда загрузка functions.php темы может вызвать некоторые проблемы. Это нарушало HTML мою другую страницу. Вот что я сделал и решил свою проблему:

define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');
require_once(RAIZ_WORDPRESS."/wp-load.php");

0

@ ninja08

Мы можем использовать расширение php xDebug для анализа скрипта.

просто включите ;xdebug.profiler_enable = 1в свой php.iniфайл, удалив ;из первой строки и после этого перезапустите сервер apache и запустите ваш сайт WordPress ... теперь файл, созданный в каталоге tmp вашего сервера xampp .. откройте этот файл с помощью приложения WincachGrind .

теперь вы можете увидеть карту вашего скрипта

WincacheGrind Простой анализ Wordpress


Вы должны были добавить это в комментарии ниже ninja08. теперь это неправильный ответ.
alhoseany

2
@alhoseany да .. я сейчас ... но мне не хватает репутации ... а потом я решаю это сделать.
Мостафа
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.