有条件地在摘录后附加“阅读更多”

时间:2019-04-23 作者:frank roburough

我想知道是否有人知道如何将if添加到此函数。当类别为429时,我需要将阅读更多内容添加到\\u摘录中

function mywiki_trim_excerpt($mywiki_text) {
 $text = substr($mywiki_text,0,-10); 
 return $text.\'...<a class="bigger" href="\'.get_permalink().\'" title="\'.__(\'read more...\',\'mywiki\').\'">\'.__(\'Read more\',\'mywiki\').\'</a>\';
}
add_filter(\'get_the_excerpt\', \'mywiki_trim_excerpt\');`
感谢advanceRichard中的任何提示

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

所以答案取决于你所说的“当类别为429时”是什么意思。这可能意味着:

您当前正在查看类别429的存档,希望将其添加到列出的所有帖子中

  • 您当前正在查看博客、日期存档或搜索结果,并希望将此文本添加到属于429类的任何单个帖子中
  • 这些都是不同的事情,解决方案也各不相同。

    对于要使用的#1is_category(). 这将告诉您当前查看的页面是否是429类的存档,并将过滤器应用于此页面上显示的所有摘录:

    function mywiki_trim_excerpt( $excerpt ) {
        if ( is_category( 429 ) ) {
            $excerpt = substr( $excerpt, 0, -10 );
            $excerpt = $excerpt . \'...<a class="bigger" href="\' . get_permalink() . \'" title="\' . __( \'read more...\', \'mywiki\' ) . \'">\' . __( \'Read more\', \'mywiki\' ) . \'</a>\';
        }
    
        return $excerpt;
    }
    add_filter( \'get_the_excerpt\', \'mywiki_trim_excerpt\' );
    
    对于#2来说,它稍微复杂一些,因为您需要对照摘录的帖子检查类别。您可以通过在过滤器中接受2个参数来实现这一点(将第4个参数设置为add_filter()2), 使用第二个参数($post, 当前职位)具有has_category():

    function mywiki_trim_excerpt( $excerpt, $post ) {
        if ( has_category( 429, $post ) ) {
            $excerpt = substr( $excerpt, 0, -10 );
            $excerpt = $excerpt . \'...<a class="bigger" href="\' . get_permalink() . \'" title="\' . __( \'read more...\', \'mywiki\' ) . \'">\' . __( \'Read more\', \'mywiki\' ) . \'</a>\';
        }
    
        return $excerpt;
    }
    add_filter( \'get_the_excerpt\', \'mywiki_trim_excerpt\', 10, 2 );
    
    技术上has_category() 无需通过即可工作$post. 如果你把它去掉,那么它会检查“当前帖子”的类别。99%的情况下,这与摘录所针对的帖子相同,但在极少数情况下,“当前”帖子可能与正在筛选其摘录的帖子不同。通过使用$post 传递给过滤器的值可以保证我们检查类别的帖子与摘录的帖子是同一个帖子。

    相关推荐

    定制的get_the_excerpt()仅在第一次发布时有效

    我使用自定义get_the_excerpt 功能在我的主题中。它对循环中的第一篇文章非常有效,但其他文章都使用了标准的摘录功能。我不明白为什么?海关get_the_excerpt 功能:function wpse_allowedtags() { // Add custom tags to this string return \'<br>,<b>,<strong>,<em>,<i>,<ul>,<o