如何包含wp-load.php并加载所有插件

时间:2018-12-16 作者:Toskan

为什么加载wp load。php“改用wordpress ajax”

这仅用于测试。我有一个只用于本地开发的测试页面,例如。test.php 在“我的主题”文件夹中

现在,当我这样做时:

global $wpdb;
require_once(__DIR__ . \'/../../../wp-load.php\');
get_header();
...
get_footer();
我注意到插件挂钩没有执行,我的所有脚本和css都没有加载

我能做些什么,让插件挂钩也能加载吗?

我也尝试手动包含我的插件文件,但没有成功。

E、 g。

require_once(__DIR__ . \'/../../plugins/myplugin-plugin/myplugin-plugin.php\');

无法解决问题

1 个回复
SO网友:Tom J Nowell

请注意,直接为一次性临时文件引导从来都不是最佳解决方案,这是一种糟糕的做法,而且往往会带来很多问题。E、 在您的情况下,您可能有可用的WordPress函数,但没有触发主题文件或API。

相反,有更好的方法可以做到这一点。这不是没有理由的坏习惯。

在浏览器中,如果你想摆弄模板,又不想创建页面模板,可以将其放在functions.php:

add_filter( \'template_include\', function($template) {
    return isset($_GET[\'test\']) ? locate_template([\'test.php\']) : $template ;
}, 99 );
现在,当你访问yoursite.com/?test, 它将加载test.php 主题中的模板。

您甚至可以进一步扩展:

add_filter( \'template_include\', function($template) {
    return !empty($_GET[\'test\']) ? locate_template([\'test/\'.$_GET[\'test\'].\'.php\') : $template ;
}, 99 );
现在,您可以在test 主题中的子文件夹,并通过yoursite.com/?test=foo 加载test/foo.php. 作为奖励,您不再需要计算总共有多少个文件夹wp-load.php 是,它将在任何WP安装上工作,无论文件夹如何配置

不要在实时服务器上执行此操作。

在CLI中,如果安装了WP CLI,则可以运行wp eval test.php 从命令行执行此操作。

您还可以运行wp shell 要获得加载了WP函数的交互式PHP shell,并测试cron作业,可以运行wp cron test.

在Cron作业或其他模板中,可以运行get_template_part(\'test\') 加载test.php WP中其他地方的模板。

您还可以使用wp cron event run --due-now 通过实际的Cron作业触发WP Cron。无需从PHP文件引导WordPress,就可以在WordPress中获得可靠的cron。

在自动测试中,通常不会以这种方式测试模板。适当的测试可以创建帖子,也可以创建模拟帖子。这通常是通过生成一个测试环境,并用已知内容的数据库预填充它,然后运行测试,将数据库恢复到过程中已知的良好示例来完成的。

这样做允许使用诸如Behat之类的工具进行集成测试,Behat通过生成无头浏览器(如phantom,甚至firefox实例)来运行自动浏览器测试。

或者,对于测试类,可以使用标准PHPUnit,并结合使用的wpapi的mock。

请记住,企业网站上的大多数主要生产主题都有tests 运行的子文件夹phpunit 或其他CI工具