Lazy Blocksで抜粋が出なくなったので出るようにした

2019-11-02

タイトル通りなのだけど抜粋がでるようにしたのにゃー

人物のアイコン素材 その5

ちょっと分かりづらいですね
このサイトはLazy Blocksでカスタムブロックを使っています
Lazy Blocks 導入後は一つの記事の99%ぐらいはカスタムブロックしか使っていなかったりします
そうするとカスタムブロックを本文と認識しないのか、抜粋が空白になってしまうという事態が起きました

その辺りを出せるようにする対処、ということにゃー
説明ご苦労さま

人物のアイコン素材 その5

ちゃんと詳しく説明しろよコラ

えー、面倒くさい

人物のアイコン素材 その5

面倒くさいじゃあないよコラ

WordCamp 2019に参加できなかったのでオンラインで少しは知識を共有してみたかっただけなのにゃー

人物のアイコン素材 その5

まあ、その心かけは立派ですけどね

PHPとかWordPressのコアの部分は初心者レベルだから間違っているかもだけどにゃー
一応動いているから大丈夫そうだけどにゃ

人物のアイコン素材 その5

もっといい方法があればコメントいただけると幸いです

Luxeritas テーマを使っているからそれ向けの内容になるけどにゃ

人物のアイコン素材 その5

フックとか変更すれば他でも使えると思います

対処内容はこんな感じにゃ

function custom_thk_excerpt( $my_excerpt) {
  // 抜粋が無いあるいは50文字以下ならば
  if ( empty($my_excerpt) || mb_strlen($my_excerpt) < 50 ) {
    // 本文を取得
    $my_content = apply_filters( 'the_content', get_the_content() );
    // ショートコードを取り除く
    $my_content = strip_shortcodes( $my_content );
    // HTMLを取り除く、140文字で出力、...を文末に
    $my_content = wp_html_excerpt($my_content, 140, '...');
    // 無害化
    $my_content = sanitize_text_field($my_content);

    $my_excerpt = $my_content;
   }
  return $my_excerpt;
}
add_filter( 'thk_excerpt', 'custom_thk_excerpt', 11 );
add_filter( 'thk_excerpt_no_break', 'custom_thk_excerpt', 11 );
人物のアイコン素材 その5

functions.php に追加するコードですね
Luxeritas だとダッシュボードの子テーマの編集から functions.php にコードを追加できるので便利です

ソースコードのコメント見てもらえばわかると思うけど対処内容は
抜粋の中身が空だったり少なかった場合は、改めてコンテンツ内容を取り込んで140文字だけ切り出して表示させる、という感じにゃ
Lazy Blocks以外の標準ブロックを使っていたりすると、その内容で抜粋文が作成されるからif文の条件は適当に変えてほしいにゃー

人物のアイコン素材 その5

thk_excerptとthk_excerpt_no_breakはLuxeritas のフックです
詳細は本家のページをご参照ください

140文字とかの文字数は好みで変更してくれい

人物のアイコン素材 その5

RSS対応の場合、the_excerpt_rssのフックで対応できるはず
ただatom feed の部分は対応できていないので依然として空白のママという

WordPressのドキュメントを読んだけどatom feedのフックがよくわからなかったのにゃー

人物のアイコン素材 その5

次の課題ですかね

誰かが情報提供してくれるのを待ちたいのにゃー

人物のアイコン素材 その5

自分で調べろ、自分で

ウーン、PHPとかもう一度勉強してみるのにゃー