web-dev-qa-db-ja.com

抜粋で文字数を制限するにはどうすればいいですか。

可能な重複:
文字から抜粋

この記事を読んだ後に質問があります( プラグインなしで検索語を強調表示する方法 )。私はこの機能(プラグインなしの検索用語)がとても好きですが、文字長が長すぎます。抜粋を短くするためにどのPHPコードを追加すればよいですか?誰かがそれを提案することができればありがたいです。ありがとうございました!

7
Jornes

function.phpファイルにこれらの行を追加します

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

上記のDeepaの答えによって提供されたフィルタフックに加えて、2つの方法でthe_excerptの使用を拡張するのを助けることができる1つの追加機能があります、

あなたがすることができます...

抜粋を文字数で制限しますが、最後のWordを切り捨てないでください。これにより、最大文字数を返すことができますが、完全な単語を保持することができるため、指定された数の制限内に収まる単語だけが返され、抜粋の由来元を指定できます。

function get_excerpt($limit, $source = null){

    $excerpt = $source == "content" ? get_the_content() : get_the_excerpt();
    $excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
    $excerpt = strip_shortcodes($excerpt);
    $excerpt = strip_tags($excerpt);
    $excerpt = substr($excerpt, 0, $limit);
    $excerpt = substr($excerpt, 0, strripos($excerpt, " "));
    $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
    $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>';
    return $excerpt;
}

/*
Sample...  Lorem ipsum habitant morbi (26 characters total) 

Returns first three words which is exactly 21 characters including spaces
Example..  echo get_excerpt(21);  
Result...  Lorem ipsum habitant 

Returns same as above, not enough characters in limit to return last Word
Example..  echo get_excerpt(24);    
Result...  Lorem ipsum habitant  

Returns all 26 chars of our content, 30 char limit given, only 26 characters needed. 
Example..  echo get_excerpt(30);    
Result...  Lorem ipsum habitant morbi
*/

この機能は、テーマファイルごとに複数回使用でき、それぞれ異なる文字数制限が指定されています。

この関数はどちらかから抜粋を取り出す能力を持っています、

  • the_content
  • the_excerpt

たとえば、投稿エディタ画面の[抜粋]ボックスにテキストが含まれているが、特別な使用例ではなくthe_content本文から抜粋したい場合は、代わりに使用します。

get_excerpt(140, 'content'); //excerpt is grabbed from get_the_content

これは、the_contentボックスに抜粋が設定されているかどうかにかかわらず、the_excerptの最初の140文字が必要であることを関数に伝えます。

get_excerpt(140); //excerpt is grabbed from get_the_excerpt

これは、最初のthe_excerptの最初の140文字が抜粋のないところにあることを関数に伝えます。the_contentはフォールバックとして使用されます。

the_contentまたはthe_excerptの両方にWordPressフィルタを使用するか、または 適切ではない という組み込みWordPress APIがある場合にそのまま使用することで、機能を改善したり、WordPressフィルタを使用したりできます。

19
userabuser