エディタのビジュアルモードで投稿を作成する(ブログを書く)際、改行する時に「Enterキー」を押すと「 ;」が挿入されてしまう。
この挿入された「 ;」が、抜粋の文字数の指定した位置(デフォルトの110文字か、excerpt_mblength で設定した文字数)あたりにあると「 」や「&nbs」、「&nb」、「&n」という文字が抜粋の最後に表示されてしまうことがある。
それらの「 」や「&nbs」、「&nb」、「&n」という文字を表示させないようにする方法のメモ。
目次
ループ内で以下のように抜粋を表示しているとこのような現象が起こることがある。
<?php $my_excerpt = apply_filters('the_excerpt', get_the_excerpt()); echo '<p>' .$my_excerpt . '</p>'; ?>
または、単純に以下のようにしている場合でも同じ。
<?php the_excerpt(); ?>
参考ページ:WordPress フォーラム
不要な「 」や「&nbs」、「&nb」、「&n」という文字を表示させないようにするには以下のように記述して抜粋を表示する。
<?php $p = get_post(get_the_ID()); $content = strip_shortcodes( $p->post_content ); echo '<p>' .wp_html_excerpt($content, 160, '...'). '</p>'; ?>
「WP Multibyte Patch」のデフォルトの抜粋の文字数を変更するには、’excerpt_mblength’ フィルターフックを使うが、特定のページ(テンプレート)のみ更に変更するには、また更に’excerpt_mblength’ フィルターフックを特定のページ(テンプレート)に記述する必要がある。
また、抜粋されたテキストの最後の文字列を変更するには、’excerpt_more’ フィルターフックを使う必要がある。
関連ページ: プラグインの「WP Multibyte Patch」デフォルトの抜粋の文字数の変更
ところが、wp_html_excerpt() を使うと両方とも指定して抜粋を表示することができるみたいでとても便利。
抜粋するテキストの文字数を「160文字」で、抜粋されたテキストの最後の文字列を「…」にして、更に (続きを読む)というリンクを出力するには以下をループ内で記述。
$p = get_post(get_the_ID()); $content = strip_shortcodes( $p->post_content ); echo '<p>' .wp_html_excerpt($content, 160, '...') . '<a class="more" href="'.get_permalink(). '"> (続きを読む) </a></p>';