加载WordPress Bootstrap的最佳方式

时间:2014-10-24 作者:Xaver

我的脚本需要加载整个WP才能正常工作。我现在是这样做的

if ( !defined(\'ABSPATH\') ) {

    /** Load WordPress Bootstrap */
    @ini_set(\'include_path\', \'../../../\');
    require_once(\'../../../wp-load.php\');

}

//additional html stuff

do_action(\'my_custom_hook\');

//more html stuff
大部分时间都有效。但有时人们会因为丢失的文件而收到致命错误。

脚本位于

wp-content/plugins/my-plugin-slug/script.php
加载它的最佳方式是什么?

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

要求文件使用相对路径从来都不是一个好主意,因为wp内容文件夹很容易更改,这会导致代码失败。

您应该将文件转换为MU plugin (只需保存即可wp-content/mu-plugins 文件夹)并将其更改为:

add_action( \'wp_ajax_super_custom_stuff\', \'my_super_custom_stuff\' );
add_action( \'wp_ajax_nopriv_super_custom_stuff\', \'my_super_custom_stuff\' );

function my_super_custom_stuff() {

  // additional html stuff

  do_action(\'my_custom_hook\');
  exit();

}
之后,让脚本运行,而不是调用url

http://example.com/wp-content/plugins/my-plugin-slug/script.php
你可以打电话

http://example.com/wp-admin/admin-ajax.php?action=super_custom_stuff
这将始终有效,因为wp-admin 文件夹,与wp-content, 无法更改,因为it is hardcoded 在很多地方。

您可以使用以下方法从linux crontab运行脚本:

wget -q --spider "http://example.com/wp-admin/admin-ajax.php?action=super_custom_stuff"

结束

相关推荐

在WordPress之外使用wp-load.php时出现问题

我正在尝试使用wp load。php在wordpress之外的页面中,这样我就可以访问wordpress中的所有函数。通常我只包含如下文件require( $_SERVER[\'DOCUMENT_ROOT\'].\'/blog/wp-load.php\' ); 但它似乎不起作用。关于可能发生的事情有什么建议吗?谢谢,保罗