在WordPress中使用Child主题覆盖父主题函数

时间:2015-01-15 18:35:16

标签: php wordpress wordpress-theming

我正在尝试使用我的子主题function.php文件中的函数覆盖父主题function.php文件,但我收到了一些错误。这是迄今为止我做过的事情。

function remove_et_postinfo_meta_actions() {

remove_action('after_setup_theme','et_postinfo_meta',3);
}

add_action('init', 'remove_et_postinfo_meta_actions');


add_action('after_setup_theme', 'cc_et_postinfo_meta', 3);


if ( ! function_exists( 'cc_et_postinfo_meta' ) ){
function cc_et_postinfo_meta( $postinfo, $date_format, $comment_zero, $comment_one, $comment_more          ){
    global $themename;

    $postinfo_meta = '';

    if ( in_array( 'author', $postinfo ) ){
        $postinfo_meta .= ' ' . esc_html__('by',$themename) . ' ' .     et_get_the_author_posts_link();
    }

    if ( in_array( 'date', $postinfo ) )
        $postinfo_meta .= ' ' . esc_html__('on',$themename) . ' ' . get_the_time( $date_format );

    if ( in_array( 'categories', $postinfo ) )
        $postinfo_meta .= ' ' . esc_html__('in',$themename) . ' ' . get_the_category_list(', ');

    if ( in_array( 'comments', $postinfo ) )
        $postinfo_meta .= ' ' . et_get_comments_popup_link( $comment_zero, $comment_one,   $comment_more );

    if ( '' != $postinfo_meta ) $postinfo_meta = __('Posted',$themename) . ' ' . $postinfo_meta;

    echo $postinfo_meta;
 }
}

1 个答案:

答案 0 :(得分:1)

您遇到的错误是什么?

如WordPress codex中所述:

  

"与style.css不同,子主题的functions.php不会覆盖父对象的对应部分。相反,它除了父代的functions.php之外还被加载。 (具体来说,它是在父文件之前加载的。)" (来源:http://codex.wordpress.org/Child_Themes

因此,无法覆盖functions.php文件,但您可以将自己的函数添加到子主题中的functions.php文件中。请务必为自己的函数添加前缀,以免与父主题中的函数发生冲突。