ワードプレスのexcerpt(抜粋)は、記事リストや、テーマによってはメタデスクリプションタグに利用されます。この抜粋の出力の長さを変える方法を解説いたします。


抜粋の長さを変えるPHPコード

抜粋の長さは初期状態では100文字前後になっています。これを200文字にするにはテーマのfunctions.phpに下記のように記載します。

function my_excerpt_length( $length ) {
    return 200; 
}
add_filter( 'excerpt_length', 'my_excerpt_length', 999 );

add_filter関数で、ワードプレスが抜粋の出力する長さを取得する処理に割り込んで200を返すことで200文字にできます。

以下のようにすることでカテゴリーページの抜粋の長さを変えたりすることも可能です。

function my_excerpt_length( $length ) {
    if ( is_category()  ) {
        return 150;
    }
    return 200; 
}
add_filter( 'excerpt_length', 'my_excerpt_length', 999 );

抜粋をメタデスクリプションに利用する

下記のコードでは、記事単体ページの場合記事の抜粋をメタデスクリプションタグとして出力します。
add_action( ‘wp_head’でヘッダーに任意のHTML(この場合はメタデスクリプションタグ)を出力します。
また、if(is_single())で記事単体ページのときのみにこの出力を行うようにします。

add_action( 'wp_head', function() {
    if(is_single()){
        global $post;
        $description = esc_html(get_the_excerpt($post->ID));
        echo '<meta name="description" content="' .$description. '" />';
    }
});

トップページのみ任意の文字列、その他のページは抜粋をメタデスクリプションとして出力することも可能です

add_action( 'wp_head', function() {
    if ( is_home() || is_front_page() ) {
        echo '<meta name="description" content="トップページに出力したいメタデスクリプションの任意の文字列" />';
    }else{
        if(is_single()){
            global $post;
            $description = esc_html(get_the_excerpt($post->ID));
            echo '<meta name="description" content="' .$description. '" />';
        }
    }
});

上記例では  if ( is_home() || is_front_page() ) { でトップページの場合は任意の文字列をメタデスクリプションに、その他の記事単体ページの場合は抜粋を出力します。

WordPress ワードプレスのテーマのカスタマイズ、その他様々なコーディングご依頼・ご相談はWPドクターまでお気軽にお送りください