Quelqu'un a-t-il déjà essayé d’étendre WP_Widget, puis de le prolonger?
Ayant associé des widgets, j'ai essayé de créer le premier WP_Widget d'extension:
class FirstWidget extends WP_Widget {
public function __construct(){
parent::__construct(
etc
puis en étendant le premier pour créer le second:
class SecondWidget extends FirstWidget {
public function __construct(){
parent::__construct(
cela fonctionne bien, sauf que le second widget n'est pas disponible dans la zone glisser-déposer des widgets. Je peux explicitement l'utiliser dans mon code:
the_widget('SecondWidget', array('title'=> "New title")
et ça se voit bien, mais je ne peux pas le glisser-déposer.
Quelqu'un sait pourquoi?
Vous devez vous assurer que tous vos paramètres sont transmis intégralement à la classe WP_Widget
. Votre code est très tronqué mais je suis à peu près sûr que c'est ce que vous faites mal.
Le code de widget ci-dessous fonctionne - il ne fait pas grand chose, mais il fonctionne. Voyez si vous pouvez l'utiliser comme modèle pour trier votre propre code.
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');
Le code provient principalement d'une autre question . J'ai fait des modifications mineures avant de poster ici.