我尝试扩展Widget_Social_Links类:
class Widget_Social_Links extends WP_Widget {
}
class VD_Widget_Social_Links extends Widget_Social_Links {
}
和init widgets_init
hook
function register_vd_social_links_widget() {
register_widget( 'VD_Widget_Social_Links' );
}
add_action( 'widgets_init', 'register_vd_social_links_widget' );
但新的小部件没有出现在管理区域,原因可能是什么?
答案 0 :(得分:0)
我认为答案是, WordPress小部件必须是WP_Widget
类的直接子级。
尽管如此,这是一个有效的解决方案,但要求您向register_widget()
类添加Widget_Social_Links
函数。
<?php
class Widget_Social_Links extends WP_Widget {
public function __construct() {
$widget_ops = array(
'classname' => 'widget_social_links',
'description' => 'Social buttons for your site?',
'customize_selective_refresh' => true,
);
parent::__construct( 'social_links', 'Social Links', $widget_ops );
}
// ...
public function register_widget() {
call_user_func_array( array( parent, '__construct' ), func_get_args() );
}
}
class VD_Widget_Social_Links extends Widget_Social_Links {
public function __construct() {
$widget_ops = array(
'classname' => 'vd_widget_social_links',
'description' => 'Social buttons for your site?',
'customize_selective_refresh' => true,
);
parent::register_widget( 'vd_social_links', 'VD Social Links', $widget_ops );
}
// ...
}
add_action( 'widgets_init', function () {
register_widget( 'Widget_Social_Links' );
register_widget( 'VD_Widget_Social_Links' );
} );