‘All’挂接和Get_Option问题

时间:2013-09-29 作者:Alex Herrmann

代码列表:http://pastebin.com/0LEqgRUZ

我的插件遇到了问题。(实际上这是一个基于类的插件)我正在尝试使用get_option 作用当我刚刚var_dump(get_option(\'option_name\', 1)) 在某处plugin_options 函数(您将看到代码列表)-它输出int(1)

问题是我不能使用get_option 在我的内部log_to 方法这个log_to 方法绑定到“all”挂钩。所以我想这就是为什么它不起作用。(偶数)wp 根本没有加载)

有人知道这个决议吗?

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

get_option fires hooks itself 因此,您触发了一个无限循环(或者类似的循环,如果不是无限的话)。您的回拨电话get_option, 触发get_option. 每个钩子都会再次触发回调get_option 触发get_option. 等等

在回调方法之外的构造函数中获取选项值。这样,当您的回调运行时,它会无意中触发自身。概念验证:

class WP_Test_Logging_Plugin {

  static $data = array();

  public function __construct() {
    $this->data = get_option(\'option_name\', 1);
    add_action( \'all\', array( $this, \'log_to\' ) );
  }

  public function log_to() {
    $hook = current_filter();
    var_dump($hook,$this->data);
  }
}
$ntlp = new WP_Test_Logging_Plugin();

结束

相关推荐

Plugins_url(‘’,__FILE__)!=带有sym链接的WP_plugin_URL

对于我的众多网站之一,plugins/plugin-name 是指向的符号链接universal-install/wp-content/plugins/plugin-name.echo WP_PLUGIN_URL 显示我期望的内容echo plugins_url(); 显示我期望的内容echo plugins_url(\'\',__FILE__) 显示我期望的内容,后跟指向通用插件目录的绝对路径。我有什么办法可以解决吗echo plugins_url(\'\',__FILE__) 仅返回预期结果?