当サイトには広告が含まれております

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

この記事は最終更新日から7年経過しています。内容が古い可能性があります。

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

記事をざっと見る

それは昨日のことでした

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



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

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

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

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

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

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

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

function ryus_more_check_message() {
    // 投稿(post_type='post')のとき more が入ってないときにメッセージを出す
    global $pagenow;
    global $post;
    
    $moreRequireMessage ='more がありません!!!!!';
    $messageErrorTemplate = '<div class="message error"><p>%s</p></div>';
    
    if ($pagenow == 'post.php'){
        if ($post->post_type == 'post') {
            // 投稿画面で投稿のとき
            if (strpos($post->post_content_filtered, '&lt;!--more--&gt;') === false) {
                // more がない
                echo sprintf($messageErrorTemplate, $moreRequireMessage);
            }
        }
    }
}
add_action( 'admin_notices','ryus_more_check_message' );

このコードの

            if (strpos($post->post_content_filtered, '&lt;!--more--&gt;') === false) {
                // more がない

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

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

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

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

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

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

この記事が気に入ったら
いいね または フォローしてね!

あなたのシェアが励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (4件)

  • こんにちは。

    スラッグチェックのコード使わせていただいてます。ありがとうございます。
    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になってしまいますが)。

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

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

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

コメントを残す

記事をざっと見る