2014-04-10 160 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');