是否可以在子主题中覆盖此函数/类?

时间:2014-08-10 作者:Chloe

是否可以覆盖此widget 来自父主题的函数?我看了这个博客,但它处理的是一个更简单的案例。

http://venutip.com/content/right-way-override-theme-functions

父级

class Chocolat_Widget_New_Entrys extends WP_Widget {

  function __construct() {...

  function widget( $args, $instance ) {...
}
add_action( \'widgets_init\', create_function( \'\', \'return register_widget( "Chocolat_Widget_New_Entrys" );\' ) );
我试图使用remove_action(\'widgets_init\',\'???\'); 但很快就意识到我无法处理注册它的函数!

我曾想过重写该函数并创建一个子类,但它仍然是以父类的名称在父类中注册的。

我想抄整堂课,但孩子functions.phploaded before parents.php.

2 个回复
最合适的回答,由SO网友:a378853 整理而成

您只需要以比父主题更高的优先级运行代码,默认为add_action 函数为10,因此您可以使用:

function s157343_unregister_widgets() {
     unregister_widget( \'Chocolat_Widget_New_Entrys\' );
}
add_action( \'widgets_init\', \'s157343_unregister_widgets\', 20 );
这将注销该小部件。当然,您仍然可以创建一个新的类来扩展该小部件的类,以覆盖您想要的方法,并基于此注册一个新的小部件:

class my_Chocolat_Widget_New_Entrys extends Chocolat_Widget_New_Entrys() {
    public function __construct() {}
    public function widget( $args, $instance ) {}
}
add_action( \'widgets_init\', create_function( \'\', \'return register_widget( "my_Chocolat_Widget_New_Entrys" );\' ) );

SO网友:Raghavendra

下面是一个明显的例子:

在函数中。php:

add_action( \'widgets_init\', function() { 
    require \'child_chocolat_widget.php\'; 
    return register_widget(  "Child_Chocolat_Widget_New_Entrys" ); 
} );
在child\\u chocolat\\u小部件中。php[自定义类文件,可以保留任何名称]

class my_Chocolat_Widget_New_Entrys extends Chocolat_Widget_New_Entrys() {
    public function __construct() {}
    public function widget( $args, $instance ) { //override method
     }
}

结束

相关推荐

theme functions (hooks)

WordPress已经提出了这个问题,但没有答案。我只是想在这个论坛上试试,如果有人知道的话,因为我也有同样的问题。要使用jquery滑块编辑我的主题,如何转到该脚本?,显示“$主题->挂钩(\'content\\u before\');”在content div标记中。有人能帮忙吗?我的主题索引。php包含以下内容<div id=\"main\"> <?php $theme->hook(\'main_before\'); ?> &#x