覆盖不可插拔功能的WordPress子主题

时间:2019-06-16 20:42:41

标签: php wordpress function

尝试编辑当前主题(称为Carrie)时遇到了麻烦。我正在使用儿童主题。因此,我要实现的是编辑/增强主题的功能之一,即“ carrie_header_post_show ”。该功能位于父文件(位于inc目录中)中,名为theme-functions.php。代码如下:

function carrie_header_post_show() {
    $carrie_theme_options = carrie_get_theme_options();

    $header_post_html = '';

    if(isset($carrie_theme_options['header_post_id']) && $carrie_theme_options['header_post_id']<>'') {

      $header_post_id = $carrie_theme_options['header_post_id'];

      $header_post = get_post($header_post_id);

      if($header_post) {
        if(has_post_thumbnail( $header_post_id )) {

          $header_post_thumb_id = get_post_thumbnail_id($header_post_id);

          $header_post_image_url = wp_get_attachment_image_src( $header_post_thumb_id, 'carrie-blog-thumb-widget');

          $header_post_image = '<a href="'.get_permalink($header_post_id).'"><img src="'.esc_url($header_post_image_url[0]).'" alt="'.esc_attr($header_post->post_title).'"/></a>';

        } else {

          $header_post_image = '';

        }

        $header_post_categories_list = get_the_category_list(', ', 0, $header_post_id);

        $header_post_html .= '<div class="header-post-image hover-effect-img">'.wp_kses_post($header_post_image).'</div>';
        $header_post_html .= '<div class="header-post-details">';
        $header_post_html .= '<div class="header-post-category">';

        $title = wp_kses_post($header_post_categories_list);

        $header_post_html .= '</div>';
        $header_post_html .= '<div class="header-post-title"><a href="'.get_permalink($header_post_id).'">'.wp_kses_post($header_post->post_title).'</a></div>';
        $header_post_html .= '</div>';

        echo '<div class="header-post-content clearfix">'.wp_kses_post($header_post_html).'</div>';
      }

    }

}

我想要实现的是添加几行代码。我尝试了以下操作:

  1. 在子主题,目标文件(theme-functions.php)中创建inc文件夹并进行编辑。不起作用,出现错误。
  2. 将已编辑的函数放入child的functions.php中。同样在这里-不起作用。
  3. 将函数放在IF语句中-相同,不起作用。

那我该怎么办?

1 个答案:

答案 0 :(得分:0)

您应该做的是请主题作者使用function_exists()使其功能有条件,然后让您在子主题中声明自己的版本。首先加载子主题,并且如果函数的父版本是有条件的(应该是有条件的),那么如果子主题中有版本,则它将永远不会执行。