在WordPress文件之外使用WordPress函数的正确方式是什么?

时间:2012-03-27 作者:alhoseany

我读到了关于在WordPress文件之外初始化WordPress函数的两种方法,因此我们可以在WordPress博客之外的任何页面或网站上使用这些函数。

这两种方法中哪一种是正确的?如果两种方法都正确,那么每种方法的用例是什么?使用一种方法和另一种方法有什么区别?

Method 1:

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

Method 2:

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

6 个回复
最合适的回答,由SO网友:EAMann 整理而成

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

SO网友:bueltge

从您的问题中选择方法2:

<?php 
define( \'WP_USE_THEMES\', false ); // Don\'t load theme support functionality
require( \'./wp-load.php\' );
wp-load.php 就是访问WordPress的所有功能,仅此而已。第一行告诉WordPress不要加载主题文件;可能这些文件是您的需求所必需的,然后删除该行。

SO网友:RayLau135

wp博客标题。php将附加一个标题状态,它将返回404的http状态代码

wp负载。php不会

在使用ajax检查http状态代码时需要注意

SO网友:Wellington Lorindo

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

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

SO网友:Mostafa

@ninja08

我们可以使用xDebug php扩展来分析脚本。

仅启用;xdebug.profiler_enable = 1 在您的php.ini 通过删除文件; 从第一行开始,然后重新启动apache服务器并运行wordpress站点。。。现在,在xampp服务器的tmp目录中创建了一个文件。。使用打开此文件WincachGrind 应用

现在您可以看到脚本的映射

WincacheGrind Simple Wordpress Analyze

SO网友:RodDev

您不必调用整个主题来使用函数,只需使用wp加载的位置即可。wordpress目录中的php。

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

?>

结束