在 WordPress 中使用子主题覆盖父主题功能

Overiding parent theme functions with a Child theme in WordPress

我试图用我的子主题 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;
 }
}

您收到的错误是什么?

如 WordPress 法典所述:

"Unlike style.css, the functions.php of a child theme does not override its counterpart from the parent. Instead, it is loaded in addition to the parent’s functions.php. (Specifically, it is loaded right before the parent’s file.)" (source: http://codex.wordpress.org/Child_Themes)

因此,无法覆盖 functions.php 文件,但您可以将自己的函数添加到子主题中的 functions.php 文件中。一定要给自己的函数加上前缀,这样才不会和父主题中的函数冲突。