WordPress

【WordPress】JINテーマでメタディスクリプションが要約されない場合の対処法

Google先生になかなか認識されないサイトがあり、何か問題がないかサイト全体を調査してみると、メタディスクリプションが要約されずものすごい長さになっていることが判明しました。JINテーマのヘッダーでは、メタディスクリプションの設定に get_the_excerpt() という関数が使われていることにご注意ください。

JINテーマでメタディスクリプションはどのように設定されている?

JINテーマでは、header.phpに下記のようにメタディスクリプションが設定されています。

<?php if( ! get_theme_mod('desc_text') == "" && is_home() || is_front_page() ): ?>
<meta name="description" itemprop="description" content="<?php echo get_theme_mod('desc_text'); ?>">
<?php endif; ?>
<?php if( is_single() ): ?>
<?php if ( ! get_post_meta($post->ID, 'post_desc',true) == null ) :?>
<meta name="description" itemprop="description" content="<?php echo get_post_meta($post->ID, 'post_desc',true) ?>" >
<?php else: ?>
<meta name="description" itemprop="description" content="<?php echo get_the_excerpt(); ?>" >
<?php endif; ?>
<?php elseif( is_page() ): ?>
<?php if ( ! get_post_meta($post->ID, 'post_desc',true) == null ) :?>
<meta name="description" itemprop="description" content="<?php echo get_post_meta($post->ID, 'post_desc',true) ?>" >
<?php endif; ?>
<?php elseif( is_category() ): ?>
<meta name="description" itemprop="description" content="<?php cps_category_desc(); ?>" >
<?php endif; ?>

投稿ページでは、投稿画面でメタディスクリプションを設定していない場合、get_the_excerpt() という関数が呼ばれています。

この get_the_excerpt() という関数が悪さをしておったのです。

なぜメタディスクリプションが要約されなかったのか?

get_the_excerpt() という関数は、投稿から55単語を抜き出した結果を戻り値として返すのですが、日本語のように語句の間を半角スペースで区切らない言語では「55単語」を判定できないのです。このようなマルチバイト問題があるため、WordPressの日本語版では「WP Multibyte Patch」というプラグインが同梱されています。

なぜか、「WP Multibyte Patch」プラグインを使っていなかったため、メタディスクリプションがとても長い文章になってしまいました。

今回のしくじりで学んだこと

WordPressのテーマを変えたときはもちろんのこと、SEO対策の重要部分に関しては定期的に監視してモニタリングできる環境づくりが大切だなと学びました。定点観測してくれるサービスありそうなので探してみようと思います。

みなさまも、get_the_excerpt()にはお気をつけを。

-WordPress