如何对WP_Widget进行两次扩展

时间:2013-05-31 作者:Leo

是否有人尝试过扩展calss WP\\u小部件,然后再次扩展它?

由于有相关的小部件,我尝试创建第一个扩展的WP\\U小部件:

class FirstWidget  extends WP_Widget {
  public function __construct(){
    parent::__construct(

然后扩展第一个以创建第二个:

class SecondWidget  extends FirstWidget  {
  public function __construct(){
    parent::__construct(
这很好,只是第二个小部件在拖放小部件区域中不可用。我可以在代码中明确使用它:

the_widget(\'SecondWidget\', array(\'title\'=> "New title")
它显示得很好,但我不能拖放它。

有人知道为什么?

1 个回复
SO网友:s_ha_dum

您必须确保将所有参数都传递到WP_Widget 班你的代码被截断了,但我很确定这就是你做错的地方。

下面的小部件代码可以工作——它什么都不做,但可以工作。看看是否可以将其用作模板来整理自己的代码。

  class Foo extends WP_Widget {
    /*constructs etc*/
    function __construct($id = \'twidg\', $descr = \'Test Widget\', $opts = array()) {
      $widget_opts = array();
      parent::__construct($id,$descr,$widget_opts);
      /*do stuff*/
    }

    function widget() {
      echo \'test widget\';
    }
  }

function rw_cb() {
  register_widget("Foo");
}
add_action(\'widgets_init\', \'rw_cb\');

class Bar extends Foo {     
    function __construct() {
      $widget_opts = array();
      parent::__construct(\'twidgextended\',\'Test Widget 2\',$widget_opts);
    }

    function widget() {
      echo \'test widget 2\';
    }
}
function rw_cb_2() {
  register_widget("Bar");
}
add_action(\'widgets_init\', \'rw_cb_2\');
代码is mostly cribbed from another question. 我在这里发布之前做了一些小改动。

结束

相关推荐

If has $title in widgets

我正在写一个小部件来显示125 x 125像素的广告。广告有6个空间,目前所有作品都有。然而,我想添加一些条件逻辑,这样,如果在一个广告的小部件管理中的值中没有输入任何内容,那么就不会显示add。我想这可以通过使用PHP if或其他什么东西来实现,我不记得它到底是什么。我需要它和<?php & ?> 标签打开。需要检查一下$adone 存在,如果不存在,则显示空白。我知道这里的代码是错误的,但类似这样的代码:<?php if_has($adone_img) ?>