このblogは投稿と同時にFacebookやtwitterやGoogle+にシェアする設定にしてあります。Facebookにシェアするときに「続きを読む」を入れていない場合は全文が表示されて、かなり焦る状態になってしまいます。
そのために途中からいろいろな工夫をして、最近ではほぼ「続きを読む」を入れ忘れることもなくなりました。
その対策をする前、過去の投稿の中にはまだ入れ忘れているものがあると思ったので、MySQLで検索して一覧を作り、投稿については一つずつ修正する方法を考えました。
Facebookにシェアするときに「続きを読む」が入っていない場合の対策
Facebookにシェアするときに「続きを読む」が入っていない場合の対策ですが、まず一番最初に行った対策は、functions.phpで行う方法でした。
[ryus_blogcard url=”https://usortblog.com//readmorecheck/”]
これで「続きを読む」である <!–more–> が入っていなければメッセージが出るので気がつかないということは無くなりました。
他のWebサイトでも使えるように
[ryus_blogcard url=”https://usortblog.com//warn-when-you-post1/”]
[ryus_blogcard url=”https://usortblog.com//warn-when-you-post2/”]
[ryus_blogcard url=”https://usortblog.com//warn-when-you-post3/”]
でプラグインにしたりもしました。
しかし、それ以前に書いてあったblogでは投稿時にチェックがされていなかったので「続きを読む」が入っていない記事がまだ残っているだろうということに気がつきました。
phpMyAdminで「続きを読む」が入っていない投稿を抽出する
ということで phpMyAdmin を使って「続きを読む」が入っていない投稿を抽出してみました。
phpMyAdminに入り、チェックしたいデータベースをクリックした後
SELECT * FROM `wp_posts` WHERE `post_content` NOT LIKE '%<!--more-->%' AND `post_status` LIKE 'publish' AND post_type='post'
このSQL文を入れました
post_content
NOT LIKE ‘%<!–more–>%’
は本文に <!–more–> が入っていないという条件
post_status
LIKE ‘publish’
は 公開状態のもの という条件
post_type=’post’
は 投稿タイプが投稿のもの(固定ページなどではない)の条件です。これらを合わせて「公開済みの投稿で <!–more–>が入っていないデータを抽出」することになります。
これを実行したところ、
44件の結果がありました。やはり…残っていました。
抽出した結果をcsvファイルをダウンロードする
この結果をcsvでダウンロードします。全部の項目は要らないのでSQL文を
SELECT ID,post_date,post_title FROM `wp_posts` WHERE `post_content` NOT LIKE '%<!--more-->%' AND `post_status` LIKE 'publish' AND post_type='post'
と変更して実行します。IDと投稿日とタイトルだけが結果として表示されます。
こんな感じで結果が出ました。よく見ると最初の頃はたんなるお知らせも投稿でしていたようなのでこういう投稿はあとで除外しようと思います。
csvでダウンロードするには
この画面の下の方にある エクスポート をクリック
MS Excel 用の CSV と ファイルに保存する にチェックをして、実行する をクリックし、ローカルPCにcsvファイルを保存します。
csvファイルをExcelで開いてみる
csvファイルをExcelで開いて使いたいと思います。
そこで一つ問題になるのがcsvファイルは文字コードがutf-8で保存されていることです。Excelはshift-jisでないと読み込んでくれないので文字コードを変換しておきます。
utf-8ファイルが読み込めるテキストエディタ(秀丸など)で開いて
このようにshift-jisにして保存するか、もしくは以前ブログにも書いた
[ryus_blogcard url=”https://usortblog.com//kanjitranslator/”]
漢字コードを変換するフリーソフトなどで、文字コードをshift-jisにしておきます。
Excelでcsvファイルを開くと
このようにデータベースから抽出した内容が表示されました。
それぞれの投稿を編集する
この一覧からそれぞれの投稿を編集しようと思います。
まず、不要と思われる行を削除します。
次に関数を使おうと思うので、このファイルをエクセル形式で保存しておきます。
名前をつけて保存 で
Excelブック の形式で保存します。
次に投稿の編集ですが、たとえば ID が 9999999 の投稿を編集するのは
https://usortblog.com//wp-admin/post.php?post=9999999&action=edit
というURLで編集画面が表示されます。ということで関数を
D列に書いてみます。
="https://usortblog.com//wp-admin/post.php?post=" & A1 & "&action=edit"
こういう内容の関数を書いてみました。これで、
D列に編集用のURLが表示されました。URLがリンクしていないようだったので隣のE列に
=HYPERLINK(d1) と入力して
リンクするようにしました。クリックすると(ログインしていないときはログイン画面が出る)
編集画面になり、すぐに修正することができます。
大丈夫そうなので、D列の右下の四角を一番下の行までドラッグして関数をコピー。E列も同様にドラッグして関数をコピーします。
こんな感じに、「続きを読む」がない投稿の編集画面へのリンクができましたのであとは淡々とクリックして修正していくだけ、です(^_^;。
投稿の中からある文字が入っているものだけを見つける
今回は「続きを読む」がないものを見つけましたが、もうひとつ気になっていて修正したいな~と思うものがありました。
ブログを書いているときに できる という表現をすることが多いのですが、どうも変換すると 出来る のように漢字がはいったものになってしまいます。わたしとしてはあくまでも できる で統一したいので、気づく限りは直しているつもりなのですがたぶんたくさん残ってしまっていると思われます。
このように「ある文字が入っている投稿だけを見つけたい」ときは
SELECT * FROM `wp_posts` WHERE `post_content` LIKE '%出来%' AND `post_status` LIKE 'publish' AND post_type='post'
こんな風に書いて抽出します。 post_content
LIKE ‘%出来%’ という部分で 出来 という文字が入った投稿を抽出しています。この結果なんと、
177件も見つかってしまいました(^_^;。これはちょっと、、、手作業ではなくupdate文で直したいところですね。
おまけ:実際にやってみた結果を追加します
ここまでで終わりにしようと思ったのですが実際にやってみた結果をお知らせします。
ExcelからURLをクリックして編集画面に行く方法ですが私の場合1回目はうまくいくのですが2回目にログイン中にもかかわらずログイン画面が出てきてしまい、保存されてあるはずのパスワードで入ろうとしてもなぜか拒絶されてしまうという謎の現象がおこってしまいました。
これはblogを書くブラウザがFirefoxでそれでログインしている状態で、URLをクリックしたときに開くChromeでログインしようとしているから?なのかもしれません。あるいは最後にはログインも拒絶されてXSERVERのメッセージが出たので、XSERVERのなんらかのセキュリティのせいかもしれません。
クリックしなくてもD列にあるURLをコピペすれば編集画面にいけるので今回はFirefoxにURLをコピペして作業しました。
作業した後にもう一度SQLを実行してみました。
すると、このような結果になり、修正しなくてもいいと思った3つの投稿以外はすべて修正されたことが分かりました(^^)/
SQLで検索すると今まで気になっていた投稿を見直すことができるので、ぜひ試してみてください(^^)/
コメント