2014-04-10 102 views
3

我为我的网站使用免费的“响应式”Wordpress主题,并首次使用儿童主题。在Wordpress中覆盖父主题功能

我需要在小部件<h3>标签下面添加div标签,但标签所在的侧边栏功能存储在父项功能中,并且在覆盖Child Theme中的功能时遇到问题。

这是我必须尝试删除父母工具条功能,并重新添加自己的,但它不删除边栏:

原有的功能增加侧边栏看起来idential我的功能child_responsive_widgets_init(),但如果有帮助,它被称为responsive_widgets_init()

<?php 

function child_responsive_widgets_init() { 

    register_sidebar(array(
          'name'   => __('Main Sidebar', 'responsive'), 
          'description' => __('Area 1 - sidebar.php - Displays on Default, Blog, Blog Excerpt page templates', 'responsive'), 
          'id'   => 'main-sidebar', 
          'before_title' => '<div class="widget-title"><h3>', 
          'after_title' => '</h3><em>&nbsp;</em></div>', 
          'before_widget' => '<div id="%1$s" class="widget-wrapper %2$s">', 
          'after_widget' => '</div>' 
        )); 
} 
function remove_parent_widgets() { 
    remove_action('widgets_init', 'responsive_widgets_init'); 
} 
add_action('init','remove_parent_widgets'); 

add_action('widgets_init', 'parent_unregister_sidebars'); 
function parent_unregister_sidebars() { 
    unregister_sidebar('main-sidebar'); 
} 

add_action('widgets_init', 'child_responsive_widgets_init'); 
?> 
+0

请前往[this](http://stackoverflow.com/a/6080097/1908141)回答 –

回答

4

我们必须wait until functions.php file is loaded,那么我们就可以拦截父母的钩。

添加到您的孩子的functions.php

add_action('after_setup_theme', 'remove_parent_hook_so_22995302'); 

function remove_parent_hook_so_22995302() 
{ 
    remove_action('widgets_init', 'responsive_widgets_init'); 
} 
+1

谢谢!这完全奏效!我也不需要使用unregister_sidebar。我会在上面发布我的更新代码。 –

0

感动from the Question到答案。

感谢brasofilo和他的解决方案我已经正确地覆盖了函数文件覆盖。如果有人想知道,以下是更新后的代码。

function child_responsive_widgets_init() { 
    register_sidebar(array(
      'name'   => __('Main Sidebar', 'responsive'), 
      'description' => __('Area 1 - sidebar.php - Displays on Default, Blog, Blog Excerpt page templates', 'responsive'), 
      'id'   => 'main-sidebar', 
      'before_title' => '<div class="widget-title"><h3>', 
      'after_title' => '</h3><em>&nbsp;</em></div>', 
      'before_widget' => '<div id="%1$s" class="widget-wrapper %2$s">',  
      'after_widget' => '</div>' 
    )); 
} 
add_action('after_setup_theme','remove_parent_widgets'); 

function remove_parent_widgets() { 
    remove_action('widgets_init', 'responsive_widgets_init'); 
} 
add_action('after_setup_theme', 'child_responsive_widgets_init');