私はテンプレートを着ています。最初の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>
最初の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(']]>', ']]>', $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()
はテキストが与えられていれば単にそれを返します。あなたはその機能を少しコピーしてカスタマイズしなければならない。
特定の長さにするには、 wp_trim_words functionを使用します。 3つのパラメータがあります。
get_the_content()
295
''
これは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>
あなたはこの機能を使用することができます:
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
組み込み関数を使用できます
function custom_excerpt_length( $length ) {
return 20;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
欲しいものを手に入れるには、2つのことをする必要があります。
1)カスタムの抜粋の長さ(文字数ではなく文字数)を設定します。これは、 この回答 に従うことによって最もよく達成できます。
2)wp_trim_excerpt()を呼び出すだけで、substrの内側にラップしないでください。
上記のコード行は、期待していることを実行していません。私はそれが抜粋の最初の295文字を返していると思いますが、整数を期待しているときに2番目の引数として文字列を渡したときに php subtr() 関数が何をするかはよくわかりません。 。