Как правильно использовать функции WordPress вне файлов WordPress?
-
-
Какие функции WP вы пытаетесь использовать «вне WP» и почему?Любой из этих методов по-прежнему будет загружать среду WP (хотя и без поддержки тем),поэтому вы * по-прежнему * вызываете функции внутри WP.Which WP functions are you trying to use "outside of WP" and why? Either of these methods will still load the WP environment (albeit without theme support), so you're *still* invoking functions inside of WP.
- 0
- 2012-03-27
- EAMann
-
Я пытаюсь понять разницу между двумя методами.Что я сделаю,так это интегрирую тему wordpress с моим сценарием поддержки.поэтому понадобится верхний колонтитул,нижний колонтитул и цикл из wordpress,а также некоторая поддержка виджетов и других плагиновI am trying to understand the difference between the 2 methods. What I will do is integrate the wordpress theme with my support script. so will need the header, footer and the loop from wordpress plus some support for widgets and other plugins
- 0
- 2012-03-27
- alhoseany
-
Я действительно сомневаюсь,что вы хотите делать что-то именно таким образом ... есть решения лучше,чем пытаться запустить сам WordPress.I really doubt this is the way you want to do things ... there are better solutions than trying to bootstrap WordPress itself.
- 0
- 2012-03-27
- EAMann
-
Я открыт для предложений,я ищу лучший способ сделать что-то?как лучше всего интегрировать тему wordpress с внешним веб-приложением?I am wide open for suggestions, I am looking for the best way to do things? what is the best way to integrate wordpress theme with outside web application?
- 0
- 2012-03-28
- alhoseany
-
6 ответ
- голосов
-
- 2012-03-27
Между файлами небольшая разница. Когда вы просматриваете страницу 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 будет немного легче,но даст те же функциональные возможности.There's little difference between the files. When you view a WordPress page, the first file called is
index.php
. And it is, essentially, your "Method 1:"define('WP_USE_THEMES', true); /** Loads the WordPress Environment and Template */ require ('./wp-blog-header.php');
The blog header file (that queues up the rest of WordPress) loads
wp-load.php
directly and fires up WordPress itself. Here's most ofwp-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' ); }
So the difference between your two methods is ... what's loaded.
Method 1 is exactly what WordPress does to load itself (with the exception of turning themes off). So if you need all of WordPress and want to fire all of the default hooks/actions, go with that route.
Method 2 is just a further step down the line. It loads all of WordPress, but doesn't call
wp()
or invoke the template loader (used by themes). Method 2 will be a little lighter-weight, but should give you the same functionality.-
Есть ли диаграмма или что-то,что отображает все эти файлы?Я видел одну давно,но не могу найти.Is there a diagram or something that maps all these files out? I saw one long ago but I can't find it.
- 3
- 2015-06-12
- ninja08
-
- 2012-03-27
Метод 2 из вашего вопроса:
<?php define( 'WP_USE_THEMES', false ); // Don't load theme support functionality require( './wp-load.php' );
wp-load.php
- это доступ ко всем функциям WordPress,вот и все.Первая строка указывает WordPress загружать не файлы темы;возможно,файлы необходимы для ваших требований,тогда удалите строку.Method 2 from your question:
<?php define( 'WP_USE_THEMES', false ); // Don't load theme support functionality require( './wp-load.php' );
wp-load.php
is the access to all functions of WordPress, that's all. The first line tells WordPress to load not the Theme files; maybe the files are necessary for your requirements, then remove the line.-
что вообще означает эта первая строка?what does that first line even means ?
- 1
- 2012-03-27
- Sagive SEO
-
Первая строка говорит WordPress не загружать все функции поддержки тем.Как правило,загружайте меньше файлов.The first line tells WordPress not to load all of its theme support functionality. Basically, load fewer files.
- 8
- 2012-03-27
- EAMann
-
Первая строка нужна только для первого метода?Is the first line needed only for the first method?
- 0
- 2014-10-05
- mcont
-
- 2016-04-11
wp-blog-header.php прикрепит статус заголовка,он вернет код статуса http 404
wp-load.php не будет
Полезно отметить при использовании ajax,поскольку он проверяет код состояния http
wp-blog-header.php will attached a header status, it will return a http status code of 404
wp-load.php will not
Useful to note when using ajax as it checks the http status code
-
- 2015-10-27
Иногда загрузкаfunctions.php темы может вызвать проблемы.Это нарушало HTML на другой моей странице.Вот что я сделал и решил свою проблему:
define('STYLESHEETPATH', ''); define('TEMPLATEPATH', ''); require_once(RAIZ_WORDPRESS."/wp-load.php");
Sometimes loading the functions.php of the theme can cause you some trouble. It was breaking the html of my other page. So that's what I did and solved my problem:
define('STYLESHEETPATH', ''); define('TEMPLATEPATH', ''); require_once(RAIZ_WORDPRESS."/wp-load.php");
-
- 2015-12-14
@ninja08
Мы можем использовать расширение xDebugphp для анализа скрипта.
просто включите
;xdebug.profiler_enable = 1
в вашем файлеphp.ini
,удалив;
из первой строки и после этого перезапустите сервер apache и запустите свой сайт wordpress ... теперь файл,созданный в каталогеtmp вашего сервера xampp .. откройте этот файл с помощью приложение WincachGrind .теперь вы можете увидеть карту вашего скрипта
@ninja08
We can use xDebug php extension to analyze an script.
just enable
;xdebug.profiler_enable = 1
in yourphp.ini
file by removing;
from first of line and after this restart apache server and run your wordpress site ...now a file created in tmp directory of your xampp server ..open this file with WincachGrind application.now you can see a map of your script
-
Вы должны были добавить это в комментарии нижеninja08.теперь это неправильный ответ.You should have added this in the comment below ninja08. this is now an incorrect answer.
- 0
- 2015-12-15
- alhoseany
-
@alhoseany да..и теперь это ... но у меня недостаточно репутации ... и тогда я решил сделать это.@alhoseany yes..i now it... but i dont have enough reputation...and then i decide to do this.
- 2
- 2015-12-15
- Mostafa
-
- 2020-05-07
Вам не нужно вызывать всю тему для использования функций,просто используйте местоположение для wp-load.php в каталоге wordpress.
<?php require($_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp-load.php'); ?>
You don't have to call the entire theme to use functions, just use the location for wp-load.php in wordpress directory.
<?php require($_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp-load.php'); ?>
Я читал о двух методах инициализации функции WordPress вне файлов WordPress,поэтому мы можем использовать эти функции на любой странице или веб-сайте вне блога WordPress.
Какой из этих двух методов правильный?Каковы варианты использования каждого метода,если оба верны?В чем разница между тем или иным методом?
Метод 1:
Способ 2: