投稿に「続きを読む」が入っていなかったらメッセージを表示する

このblogの投稿は結構長い、そう、長い(^_^;んです。カテゴリーページやアーカイブの一覧などで表示されるとき「続きを読む(<!--more-->)」が入っていないと全文表示されてしまうので、必ず入れるようにはしているのですが、ついうっかり忘れてしまいます。
昨日もそれを入れ忘れて ひぇ~! ということがありました。
ということで、「続きを読む」が入っていなかったら注意してくれるようにしてみました。

スポンサーリンク

それは昨日のことでした

それは昨日のこと、投稿予約してあったblogが表示されたかな?とFacebookを見に行ったら、こんな風に表示されていました。



ひぇ~!またやってしまった。曼荼羅アートか!!!

と、超焦ってすぐにFacebookメッセージ(Jetpackの共有で投稿と同時にシェアされるようになっている)を編集し、WordPressでは「続きを読む(<!--more-->)」を入れて更新しました。共有されると改行が無くなって、お経の文字みたいに文字がびーっしりなのでなんか超焦るんです(^^;(^^;

またやってしまったorz。毎日書いていると何度かこれをやってしまい、そのたびにかなり焦ってしまいます。

何より焦るのはFacebookの投稿であんなに長いものが出ていたら嫌われて非表示にされる率も高まってしまう、、まずい、ということです。もちろんカテゴリーやアーカイブページでも全文が表示されていたら次の投稿を見てもらえることもないだろうし。とにかく、「続きを読む(<!--more-->)」は忘れずに入れなきゃ、、と思います。

投稿に「続きを読む(<!--more-->)」が入ってなければメッセージを出すようにする

「投稿や固定ページのスラッグに関するメッセージを投稿画面に表示する」でスラッグが入っていなかったり、重複していたりしたらメッセージを出すようにという機能を作ったのでそういう感じで「続きを読む(<!--more-->)」が入ってなければメッセージを出すようにしてみようと思いました。

使っている子テーマのfunctions.phpに以下のコードを入れました。

このコードの

ここで「続きを読む(<!--more-->)」が入っているかどうかをチェックしています。最初 <!--more-->(の半角) で判定していたのですが、引っかからなくてちょっと悩みましたが実際に文字としてはHTMLエンコードされて、 >(の半角) とか <(の半角)になっているようで、それにしたらちゃんと引っかかるようになりました(^^)/。

これをいれたらどうなるか?

これを入れた後に「続きを読む(<!--more-->)」なしで投稿を下書き保存すると、

こういう感じでメッセージが出ます。「続きを読む(<!--more-->)」を入れると、

メッセージが消えました(^^)/

これで、「続きを読む(<!--more-->)」を入れ忘れることも無くなるんじゃないかな~と思います♪

兎本美佳

ブログを見た人がそのままできたらいいなと思って、できるだけ丁寧に書いています。blogに書いたようなネタの有償対応のご相談は「ゆうそうと」へいただければと思います(^^)/
無償での対応をご希望の場合は、コメントをいただけましたら可能な場合はコメントを返させていただきます。

シェアする

フォローする

スポンサー広告
ブログをメールで購読

メールアドレスを記入して購読すれば、更新をメールで受信できます。

259人の購読者に加わりましょう

スポンサーリンク
スポンサーリンク

コメント

  1. kalingon0901 より:

    こんにちは。

    スラッグチェックのコード使わせていただいてます。ありがとうございます。
    moreチェックの方が機能しないのですが、ワードプレスのバージョンアップによるものでしょうか?
    具体的にはmoreタグを入れてる場合でも警告メッセージが出てしまいます。

    大変便利なので可能であれば対応お願いいたします。

    • 兎本美佳 兎本美佳 より:

      kalingon0901さん、こんばんは。スラッグチェックのコードでmoreタグが効かないという件ですね。確かに私もある環境でやった場合のみ、moreチェックが効かないという状況がありまして原因が今時点では分かっていません。サーバーが違ったり環境が異なる場合は効いたりするのですが。
      エディターはビジュアルエディターorテキストエディターのどちらをお使いでしょうか?もしかするとビジュアルエディターだとチェックが異なって、有効でなくなるのかもしれません。いずれにしても今エラーが出ている環境でテストができないとコードが追えないので、コードを追って原因を探るのは難しいかもしれません。
      もしも英文を使わないようなwebサイトでしたら

      if (strpos($post->post_content_filtered, ‘<!–more–>’) === false) {

      if (strpos($post->post_content_filtered, ‘more’) === false) {

      のようにチェックを大ざっぱにすることで効くようになるかもしれません(本文に英文のmoreという文字が使われていればOKになってしまいますが)。

  2. kalingon0901 より:

    兎本さんこんばんは。返信ありがとうございます。
    ‘more’ にしたり’–more–‘ にしたりしてやってみましたがどれもうまくいきませんでした。

    あきらめます。アドバイスありがとうございました。

    • 兎本美佳 兎本美佳 より:

      kalingon0901さん、おはようございます。やっぱりだめでしたかーすみません。また同様のことが起こって解決できたらブログに書きますね!

トップへ戻る