wp_footer hook running twice

时间:2011-07-04 作者:romulodl

我创建了一个小部件,它还必须使用wp\\u页脚挂钩运行一些代码。但是如果扩展WP\\u小部件,WP\\u页脚会运行两次!是否有人已经过了同样的问题?

以下是一个示例:

/*
Plugin Name: Test
Description: Test Plugin by Romulo De Lazzari
Version: 1.0
Author: Romulo De Lazzari
*/

new Test();

class Test extends WP_Widget{

    public function __construct(){

        parent::__construct(\'test-widget\', \'Test Widget\');      

        add_action(\'widgets_init\', array($this, \'register_my_widget\'));
        add_action(\'wp_footer\', array($this, \'do_something\'));
    }

    public function register_my_widget(){
        return register_widget("Test");
    }

    public function do_something(){
        echo "<p>Hello! This is a test!</p>";
    }

    public function widget($args, $instance) {

    }

    public function form($instance){

    }

    public function update($new_instance, $old_instance){

    }

}
方法do\\u something()在这里运行了两次,如果去掉“Widget部分”,它运行得很好。有人能帮帮我吗?

提前谢谢你,罗慕洛

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

该代码看起来不符合当前的Widgets API。也许你的问题是相关的?

第一个潜在问题:你的班级test 应该是plugin-slug-test, 以避免命名冲突。

第二个潜在问题:WP\\u Widget扩展类中的唯一函数应该是:

函数plugin-slug-test(){}函数小部件($args,$instance){}

  • 函数更新($new\\u instance,$old\\u instance){}
  • 函数表单($instance){}
  • 您需要移动add_action() 在Widget类的外部调用。

    第三个潜在问题:为什么要将所有小部件类函数声明为公共的?

    第四个潜在问题:我认为你不需要申报new Test(); 对于小部件类。

    结束

    相关推荐

    Integrating plugins in themes

    我找不到讨论这个的帖子,所以开始这篇。我目前正在为3.1+开发一个相当复杂的主题,我的意思是,除了样式和常规的前端功能之外,我还在主题的核心包括后端和前端的插件。因此,为了使这一点更有条理,我将其分为三个问题:集成插件是一种常见的做法吗</自动更新主题/插件有什么影响/复杂之处</在不破坏现有功能的情况下,包含每个插件的最佳方式是什么