web-dev-qa-db-ja.com

Get_the_excerpt()を特定の長さにカスタマイズし、「続きを読む」の出力にする。

私はテンプレートを着ています。最初の1〜2段落(カテゴリからのすべての記事)からの紹介をつかむリストがあります。抜粋を295語に設定すると、リストが次の段落から追加の語を取得することがあります。それを止めるためにRead Moreタグを追加したいです。誰かがその部分を手伝ってくれる?

<div id="all-div-cabrand-content-stories">
    <div class="kids-families-con-cabrand-stories">
        <?php echo get_the_post_thumbnail($page->ID, 'thubmnailstorysmall'); ?>
    </div>
    <div class="kids-con-cabrand-new-stories">
        <span>
            <?php print substr(get_the_excerpt(),wp_trim_excerpt(),295); ?>
            <i><a style="color:#1975D1;float:Right;" class="title" href="<?php the_permalink() ?>" rel="bookmark">Click for Story & Video</a></i>
            <br/>
        </span>
    </div>
</div>
3
Chrisq

最初の1つか2つの段落は正規表現でつかむことができます(正規表現)

function custom_excerpt( $content = '' ){

    if( empty( $content ) )
        return $content;

    $result = '';
    $matches = array();

    // grab all paragraphs from $content
    preg_match_all( '#<\s*p[^>]*>(.*?)<\s*/\s*p>#ui', $content, $matches );

    if( ! empty( $matches ) ){

        // add the first paragraph
        $result = $matches[0][0];

        // add the swecond paragraph if available
        if( isset( $matches[0][1] ) )
            $result .= $matches[0][1];

        // set the excerpt length
        add_filter( 'excerpt_length', 'custom_excerpt_length' );

        // create the custom excerpt
        $result = custom_trim_excerpt( $result );

    }

    return $result;

}

function custom_excerpt_length(){

    return 295;

 }

function custom_trim_excerpt( $text = '' ){

    $text = strip_shortcodes( $text );

    $text = apply_filters('the_content', $text);
    $text = str_replace(']]>', ']]&gt;', $text);
    $excerpt_length = apply_filters('excerpt_length', 55);
    $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
    $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );

    return $text;
}

で関数を呼び出す

<?php print custom_excerpt( get_the_content( 'Read More' ) ); ?>

テキストをwp_trim_excerpt()に引き渡すことはできないので、これは少しトリッキーです。 wp_trim_excerpt()はテキストが与えられていれば単にそれを返します。あなたはその機能を少しコピーしてカスタマイズしなければならない。

2
Ralf912

特定の長さにするには、 wp_trim_words functionを使用します。 3つのパラメータがあります。

  1. トリミングするテキスト例:get_the_content()
  2. 言葉の数。例:295
  3. 文末に追加するもの例:''これはnullを意味します。

これを使って:

<span>
    <?php echo wp_trim_words( get_the_content(), 295, '' ); ?>
    <i><a style="color:#1975D1;float:Right;" class="title" href="<?php
        the_permalink() ?>" rel="bookmark">Click for Story & Video</a></i>
    <br/>
</span>
2
iBrAhiM

あなたはこの機能を使用することができます:

function get_excerpt_trim($num_words='20', $more='...'){
    $excerpt = get_the_excerpt();
    $excerpt = wp_trim_words( $excerpt, $num_words , $more );
    return $excerpt;
}

https://codex.wordpress.org/Function_Reference/wp_trim_words

1
ind88

組み込み関数を使用できます

function custom_excerpt_length( $length ) {
    return 20;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

http://codex.wordpress.org/Function_Reference/the_excerpt

0
Vee

欲しいものを手に入れるには、2つのことをする必要があります。

1)カスタムの抜粋の長さ(文字数ではなく文字数)を設定します。これは、 この回答 に従うことによって最もよく達成できます。

2)wp_trim_excerpt()を呼び出すだけで、substrの内側にラップしないでください。

上記のコード行は、期待していることを実行していません。私はそれが抜粋の最初の295文字を返していると思いますが、整数を期待しているときに2番目の引数として文字列を渡したときに php subtr() 関数が何をするかはよくわかりません。 。

0
Freddy