【问题标题】:Trying to modify "Read more" link in parent theme尝试修改父主题中的“阅读更多”链接
【发布时间】:2020-11-24 01:13:06
【问题描述】:

我的父母有一个自定义的“阅读更多”功能。我想更改文本并添加到我的子主题function.php。

这是父函数

add_filter( 'excerpt_length', 'newslite_excerpt_length', 999 );
if ( ! function_exists( 'newslite_implement_read_more' ) ) :

    function newslite_implement_read_more( $more ) {

        $flag_apply_excerpt_read_more = apply_filters( 'newslite_filter_excerpt_read_more', true );
        if ( true !== $flag_apply_excerpt_read_more ) {
            return $more;
        }

        $output = $more;
        $read_more_text = __('continue reading','newslite');
        if ( ! empty( $read_more_text ) ) {
            $output = ' <div class="read-more-text"><a href="' . esc_url( get_permalink() ) . '" class="read-more">' . esc_html( $read_more_text ) . '</a></div>';
            $output = apply_filters( 'newslite_filter_read_more_link' , $output );
        }
        return $output;

    }

endif;
add_action( 'excerpt_more', 'newslite_implement_read_more' );

【问题讨论】:

  • 你想怎么修改。请更新您的问题。您是否尝试过任何更改?
  • 想要更改“阅读更多”文本。我正在构建一个子主题,所以不想只修改父主题。
  • 我希望从我的子主题加载此功能,那么如何让我的模板先阅读我的模板,以便我可以有不同的“阅读更多”文本?
  • 添加过滤器之前和之后的操作
  • 也许只删除过滤器并添加一个新过滤器会更容易?

标签: php wordpress function filter themes


【解决方案1】:

我会删除它们的功能,并创建您自己的自定义功能。

add_action( 'excerpt_more', 'custom_newslite_implement_read_more', 9999 );
function custom_newslite_implement_read_more( $more ) {

    remove_filter( 'excerpt_length', 'newslite_excerpt_length', 999 );

    $flag_apply_excerpt_read_more = apply_filters( 'custom_newslite_filter_excerpt_read_more', true );
    if ( true !== $flag_apply_excerpt_read_more ) {
        return $more;
    }

    $output = $more;
    $read_more_text = __('read more','newslite'); // change read more to whatever you want
    if ( ! empty( $read_more_text ) ) {
        $output = ' <div class="read-more-text"><a href="' . esc_url( get_permalink() ) . '" class="read-more">' . esc_html( $read_more_text ) . '</a></div>';
        $output = apply_filters( 'custom_newslite_filter_read_more_link' , $output );
    }
    return $output;

}

【讨论】:

  • 我想做的是,根本不改变父文件,要么:A)将代码添加到我的 function.php 文件中删除此函数,然后创建我自己的 - 或 B)复制父代码,只需更改按钮的文本字符串。我试过 B 但由于父函数首先加载,它无法识别我的副本。希望这是有道理的,感谢您的帮助。
【解决方案2】:

试用代码:

   function new_excerpt_more($more) {
       global $post;
       return '… <a href="'. get_permalink($post->ID) . '">' . 'Read More &raquo;' . '</a>';
   }
   add_filter('excerpt_more', 'new_excerpt_more');

【讨论】:

    【解决方案3】:

    我将父函数(if 语句中的所有内容)复制到我的子functions.php 文件中。然后只需更改文本字符串。这行得通。

    function newslite_implement_read_more( $more ) {
    
        $flag_apply_excerpt_read_more = apply_filters( 'newslite_filter_excerpt_read_more', true );
        if ( true !== $flag_apply_excerpt_read_more ) {
            return $more;
        }
    
        $output = $more;
        $read_more_text = __('More','newslite');
        if ( ! empty( $read_more_text ) ) {
            $output = ' <div class="read-more-text"><a href="' . esc_url( get_permalink() ) . '" class="read-more">' . esc_html( $read_more_text ) . '</a></div>';
            $output = apply_filters( 'newslite_filter_read_more_link' , $output );
        }
        return $output;
    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-01
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      • 2014-10-29
      相关资源
      最近更新 更多