请注意,直接为一次性临时文件引导从来都不是最佳解决方案,这是一种糟糕的做法,而且往往会带来很多问题。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工具