【问题标题】:Wordpress plugin and action hooksWordpress 插件和动作钩子
【发布时间】:2014-10-15 13:07:01
【问题描述】:

我是 WP 新手,我正在尝试创建一个新插件,但在添加类中定义的新操作时遇到问题。 我想根本问题是代码的执行方式和 init 操作挂钩,但我在互联网上找不到我的答案,我想知道是否有替代方法:

plugin.php 文件

...
require_once( PLUGIN_DIR . 'class.plugin.php' );
add_action( 'init', array( 'Plugin', 'init' ) );
...

class.plugin.php

class Plugin {

private static $instance = false;

public static function init() {

   if ( !self::$instance ) {
        self::$instance = true;
        self::init_hooks();           
    }
} 

private static function init_hooks() {
    add_action('init','foo1');
    add_filter('filter1', 'foo2');
}
public static function foo1(){
   ....
}

public static function foo2($var) {

  ....
}

【问题讨论】:

  • 你有什么错误吗?我不知道它是否有效,但由于您的 init 方法是静态的,请尝试像这样调用:add_action( 'init', 'Plugin::init'); 和调试,die('I am step here'); 在您的 init() 方法的第一行。

标签: php wordpress hook


【解决方案1】:

你需要改变你的动作钩子

private static function init_hooks() {
   add_action('init',array( 'Plugin', 'foo1' ) );
   add_filter('filter1', array( 'Plugin', 'foo2' ));

【讨论】:

  • 如果有帮助,请您接受我的回答吗?
  • 我试过了,但我没有足够的声誉。你能帮我解决这个问题吗?在方法'foo1'中我试图设置一个cookie但我不能,可能是由于执行顺序,但我认为它可以完成。
  • 公共静态函数 foo1(){ setcookie('mycookie',$_GET['foo1'], time() + 3600, COOKIEPATH, COOKIE_DOMAIN ); } 再次感谢您!
  • 您是否打印或检查过 $_GET['foo1']?你觉得它有价值吗?
  • 是的,如果我在 init_hooks 上使用 setcookie(并删除 add_action(...) 行),它也可以工作。即:私有静态函数 init_hooks() { //add_action('init',array( 'Plugin', 'foo1' ) );设置cookie(...); add_filter('filter1', array('Plugin', 'foo2'));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2013-05-27
  • 2017-04-28
相关资源
最近更新 更多