Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重写Wordpress中的父主题函数_Php_Wordpress - Fatal编程技术网

Php 重写Wordpress中的父主题函数

Php 重写Wordpress中的父主题函数,php,wordpress,Php,Wordpress,我正在为我的网站使用免费的“响应性”Wordpress主题,并首次使用儿童主题 我需要在widgets标记下面添加一个div标记,但是标记所在的边栏函数存储在父函数中,我在覆盖子主题中的函数时遇到了问题 这就是我必须尝试删除Parents侧边栏函数,并重新添加我自己的功能,但它不会删除侧边栏: 添加边栏的原始函数看起来与我的函数child\u responsive\u widgets\u init()相同,但如果有帮助的话,它被称为responsive\u widgets\u init() &l

我正在为我的网站使用免费的“响应性”Wordpress主题,并首次使用儿童主题

我需要在widgets
标记下面添加一个div标记,但是标记所在的边栏函数存储在父函数中,我在覆盖子主题中的函数时遇到了问题

这就是我必须尝试删除Parents侧边栏函数,并重新添加我自己的功能,但它不会删除侧边栏:

添加边栏的原始函数看起来与我的函数
child\u responsive\u widgets\u init()
相同,但如果有帮助的话,它被称为
responsive\u widgets\u 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' );
?> 
我们必须这样做,然后我们可以拦截父对象的钩子

将此添加到孩子的
函数.php

add_action( 'after_setup_theme', 'remove_parent_hook_so_22995302' );

function remove_parent_hook_so_22995302()
{
    remove_action( 'widgets_init', 'responsive_widgets_init' );
}
开始回答

感谢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' );
function-child\u-responsive\u-widgets\u-init(){
寄存器侧栏(数组)(
'name'=>uuu('Main Sidebar','responsible'),
'description'=>uu uu('Area 1-sidebar.php-默认显示在博客、博客摘录页面模板上,'responsive'),
'id'=>'main sidebar',
“在标题“=>”之前,
“在标题“=>”之后,
'在小部件'=>''之前,
'在小部件'=>''之后
) );
}
添加操作(“在设置主题之后”、“删除父项小部件”);
函数remove\u parent\u widgets(){
删除操作('widgets_init','responsive_widgets_init');
}
添加动作('after_setup_theme'、'child_responsive_widgets_init');

去看看答案谢谢!!!这完全奏效了!我也不需要使用unregister_侧边栏。我将在上面发布我的更新代码。