在Wordpress中覆盖functions.php

时间:2017-09-21 19:21:31

标签: wordpress parent-child

我是Wordpress的新手,我正在尝试使用我的子主题中的height文件覆盖functions.php。我想改变的原始代码是

functions.php

function generic_read_more_link() {
    if (!is_admin()) {
        return ' <a href="' . esc_url(get_permalink()) . '" class="more-link">...</a>';
    }
}

add_filter('the_content_more_link', 'generic_read_more_link');

function generic_excerpt_read_more_link($more) {
    if (!is_admin()) {
        global $post;
        return ' <a href="' . esc_url(get_permalink($post->ID)) . '" class="more-link">...</a>';
    }
}

add_filter('excerpt_more', 'generic_excerpt_read_more_link');
add_action('widgets_init', 'generic_widgets_init');

但是,我不知道如何覆盖它。如果我只更改单词,我将只获得空白页。

3 个答案:

答案 0 :(得分:0)

您无法覆盖它,因为它不是可插拔的功能。 Pluggable Functions

答案 1 :(得分:0)

你无法覆盖这些,看起来parent-theme没有制作,所以你可以。

你需要做什么(而且不理想)改变名称:

function generic_read_more_link_child() {
    if (!is_admin()) {
        return ' <a href="' . esc_url(get_permalink()) . '" class="more-link">Read more</a>';
    }
}

add_filter('the_content_more_link', 'generic_read_more_link_child');

function generic_excerpt_read_more_link_child($more) {
    if (!is_admin()) {
        global $post;
        return ' <a href="' . esc_url(get_permalink($post->ID)) . '" class="more-link">Read more</a>';
    }
}

add_filter('excerpt_more', 'generic_excerpt_read_more_link_child');
add_action('widgets_init', 'generic_widgets_init');

所以theme-child函数也会在parent之后执行,当然这不会阻止parent个。

答案 2 :(得分:0)

您有两种选择:

  1. 添加您自己的优先级较高的功能

    function namespace_read_more_link() {
      if (!is_admin()) {
        return ' <a href="' . esc_url(get_permalink()) . '"class="more-link">Read More</a>';
      }
    }
    
    add_filter('the_content_more_link', 'namespace_read_more_link', 15);
    
  2. 删除父主题功能

    /* Remove the parent filter */
    function child_remove_parent_read_more() {
      remove_filter('the_content_more_link', 'generic_read_more_link_child');
    }
    add_action( 'wp_loaded', 'child_remove_parent_read_more' );
    
    /* Add our own filter */
    function namespace_read_more_link() {
      if (!is_admin()) {
        return ' <a href="' . esc_url(get_permalink()) . '" class="more-link">Read More</a>';
      }
    }
    add_filter('the_content_more_link', 'namespace_read_more_link');
    
  3. 有关详细信息,请阅读Dedering在Pluggable Functions in Wordpress上发布的文章。