WordPress:在文本之后但在图像之前摘录

时间:2014-08-31 18:13:27

标签: php wordpress

我想知道如何执行以下操作:

我希望在45个单词之后做一段摘录,但如果帖子的文字少于45个单词且帖子中包含图片,那么应该在文本后面加入更多的标签。

第一:我对这个解决方案很满意。 第二:伟大的可能是在这种情况下有一个替代句子,例如“点击查看图片。”

希望这对任何阅读此内容的人都有意义。

目前我有以下内容:

/*-----------------------------------------------------------------------------------*/
/* Sets the post excerpt length to 15 characters.
/*-----------------------------------------------------------------------------------*/

function moka_excerpt_length( $length ) {
    return 45;
}
add_filter( 'excerpt_length', 'moka_excerpt_length' );


/*-----------------------------------------------------------------------------------*/
/* Returns a "Continue Reading" link for excerpts
/*-----------------------------------------------------------------------------------*/

function moka_excerpt_more( $more ) {
    return '&hellip; <a class="read-more" href="'. get_permalink( get_the_ID() ) . '">' . __( 'Read more', 'moka' ) . '</a>';
}
add_filter( 'excerpt_more', 'moka_excerpt_more' );

非常感谢任何帮助。

非常感谢和亲切的问候。

2 个答案:

答案 0 :(得分:0)

我想,您可以自己编写代码。 您可以向the_content()或其他方式添加过滤器: 请参阅:http://wordpress.org/support/topic/executing-a-function-only-if-a-post-contains-an-image,你可以检查the_content()是否有img或者没有?! 并且为了计算the_content()中的单词,这个答案很有用: Counting words on a html web page using php

答案 1 :(得分:0)

我做了一些更深入的研究,并提出了以下建议。我知道它不会起作用,但有些部分可以单独使用,但我无法将所有部分组合在一起。也许有人可以帮助我指出正确的方向?

    function individual_excerpt_more( $more ) {
if {
    function word_count() {
        $content = get_post_field( 'post_content', $post->ID );
        $word_count = str_word_count( strip_tags( $content ) );
        return $word_count; <45 // (less than 45 words)
        }
    && $content = $post->post_content;
    if( has_shortcode( $content, 'gallery', 'video' ) ) {
    // The content has a [gallery] & [video] short code, so this check returned true.
    }
    return '&hellip; <ins><a class="read-more" href="'. get_permalink( get_the_ID() ) . '">Read more</a></ins>';
    }
else {
    function theme_excerpt_length( $length ) {
        return 45;
    }
    add_filter( 'excerpt_length', ’theme_excerpt_length' );
}
add_filter( 'excerpt_more', 'individual_excerpt_more' );