我了解了两种在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内部调用函数。

我试图了解两种方法之间的区别。我要做的是将wordpress主题与我的支持脚本集成在一起。因此需要wordpress的页眉,页脚和循环,以及对小部件和其他插件的一些支持

我真的很怀疑这是您要执行的操作的方式……有比尝试重新启动WordPress本身更好的解决方案。

我愿意征求建议,我正在寻找做事的最佳方法?将wordpress主题与外部Web应用程序集成的最佳方法是什么?

#1 楼

文件之间没有什么区别。当您查看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会更轻一些,但应该为您提供相同的功能。

评论


是否有一个图表或某种东西可以映射所有这些文件?我很久以前见过,但找不到。

– ninja08
2015年6月12日在16:53



#2 楼

问题2的方法:

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


wp-load.php是对WordPress所有功能的访问,仅此而已。第一行告诉WordPress不加载主题文件;也许文件对于您的要求是必需的,然后删除该行。

评论


第一行甚至意味着什么?

–敏捷的SEO
2012年3月27日在22:35

第一行告诉WordPress不要加载其所有主题支持功能。基本上,加载较少的文件。

–EAMann
2012年3月27日22:52

第一行只需要第一种方法吗?

–mcont
2014年10月5日13:46

#3 楼

wp-blog-header.php将附加标头状态,它将返回404的http状态代码

wp-load.php不会

使用时需要注意Ajax检查HTTP状态代码

#4 楼

有时加载主题的functions.php可能会给您带来一些麻烦。它破坏了我另一页的html。这就是我所做的并解决了我的问题:

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


#5 楼

@ ninja08
我们可以使用xDebug php扩展来分析脚本。
只需从行首删除;xdebug.profiler_enable = 1即可在php.ini文件中启用;,并在此重启apache服务器后运行wordpress网站...现在在您的xampp服务器的tmp目录中创建了一个文件。.使用WincachGrind应用程序打开此文件。
现在您可以看到脚本的映射了


评论


您应该已经在ninja08下面的评论中添加了此内容。现在这是一个错误的答案。

–alhoseany
2015年12月15日在7:26

@alhoseany是的..我现在...但是我没有足够的声誉...然后我决定这样做。

– Mostafa
15年12月15日在18:48

#6 楼

您无需调用整个主题即可使用功能,只需在wordpress目录中使用wp-load.php的位置即可。

<?php
require($_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp-load.php');

?>