ある文字が入っていないor入っている投稿を一括検索して、ひとつずつ修正する方法

このblogは投稿と同時にFacebookやtwitterやGoogle+にシェアする設定にしてあります。Facebookにシェアするときに「続きを読む」を入れていない場合は全文が表示されて、かなり焦る状態になってしまいます。
そのために途中からいろいろな工夫をして、最近ではほぼ「続きを読む」を入れ忘れることもなくなりました。
その対策をする前、過去の投稿の中にはまだ入れ忘れているものがあると思ったので、MySQLで検索して一覧を作り、投稿については一つずつ修正する方法を考えました。

Facebookにシェアするときに「続きを読む」が入っていない場合の対策

Facebookにシェアするときに「続きを読む」が入っていない場合の対策ですが、まず一番最初に行った対策は、functions.phpで行う方法でした。

このblogの投稿は結構長い、そう、長い(^_^;んです。カテゴリーページやアーカイブの一覧などで表示されるとき「続きを読む(<!--more-->)」が入っていないと全文表示

これで「続きを読む」である <!–more–> が入っていなければメッセージが出るので気がつかないということは無くなりました。

他のWebサイトでも使えるように

blogを書いていて「あー、失敗した」ということが今まで数多くありました。毎日の事なのでなんとか効率化したいと思って、子テーマのfunctions.phpに色々仕込むことで失敗

投稿する時にスラッグ、カテゴリー、moreが抜けていないか?また公開をクリックしたときにすぐ公開せずに確認メッセージを出して答えを入力しないと公開できないようにする機能を持った

2回に分けて投稿する時にスラッグやmoreやカテゴリーの指定が抜けていないかのチェックや公開するときにポップアップで確認する機能を持つプラグインを作ってきました。今回でいよいよ

プラグインにしたりもしました。

しかし、それ以前に書いてあったblogでは投稿時にチェックがされていなかったので「続きを読む」が入っていない記事がまだ残っているだろうということに気がつきました。

phpMyAdminで「続きを読む」が入っていない投稿を抽出する

ということで phpMyAdmin を使って「続きを読む」が入っていない投稿を抽出してみました。

phpMyAdminに入り、チェックしたいデータベースをクリックした後

このSQL文を入れました

post_content NOT LIKE ‘%<!–more–>%’

は本文に <!–more–> が入っていないという条件

post_status LIKE ‘publish’

公開状態のもの という条件

post_type=’post’

投稿タイプが投稿のもの(固定ページなどではない)の条件です。これらを合わせて「公開済みの投稿で <!–more–>が入っていないデータを抽出」することになります。

これを実行したところ、

44件の結果がありました。やはり…残っていました。

抽出した結果をcsvファイルをダウンロードする

この結果をcsvでダウンロードします。全部の項目は要らないのでSQL文を

と変更して実行します。IDと投稿日とタイトルだけが結果として表示されます。

こんな感じで結果が出ました。よく見ると最初の頃はたんなるお知らせも投稿でしていたようなのでこういう投稿はあとで除外しようと思います。

csvでダウンロードするには

この画面の下の方にある エクスポート をクリック

MS Excel 用の CSVファイルに保存する にチェックをして、実行する をクリックし、ローカルPCにcsvファイルを保存します。

csvファイルをExcelで開いてみる

csvファイルをExcelで開いて使いたいと思います。

そこで一つ問題になるのがcsvファイルは文字コードがutf-8で保存されていることです。Excelはshift-jisでないと読み込んでくれないので文字コードを変換しておきます。

utf-8ファイルが読み込めるテキストエディタ(秀丸など)で開いて

このようにshift-jisにして保存するか、もしくは以前ブログにも書いた

テキストファイルやCSVファイルを開いたときに漢字が文字化けしてしまっていて見えないことがあります。そういうとき、文字コード変換に使っているのがKanjiTranslatorで

漢字コードを変換するフリーソフトなどで、文字コードをshift-jisにしておきます。

Excelでcsvファイルを開くと

このようにデータベースから抽出した内容が表示されました。

それぞれの投稿を編集する

この一覧からそれぞれの投稿を編集しようと思います。

まず、不要と思われる行を削除します。

次に関数を使おうと思うので、このファイルをエクセル形式で保存しておきます。

名前をつけて保存

Excelブック の形式で保存します。

次に投稿の編集ですが、たとえば ID が 9999999 の投稿を編集するのは

https://usortblog.com/wp-admin/post.php?post=9999999&action=edit

というURLで編集画面が表示されます。ということで関数

D列に書いてみます。

こういう内容の関数を書いてみました。これで、

D列に編集用のURLが表示されました。URLがリンクしていないようだったので隣のE列に



=HYPERLINK(d1)
と入力して

リンクするようにしました。クリックすると(ログインしていないときはログイン画面が出る)

編集画面になり、すぐに修正することができます。

大丈夫そうなので、D列の右下の四角を一番下の行までドラッグして関数をコピー。E列も同様にドラッグして関数をコピーします。

こんな感じに、「続きを読む」がない投稿の編集画面へのリンクができましたのであとは淡々とクリックして修正していくだけ、です(^_^;。

投稿の中からある文字が入っているものだけを見つける

今回は「続きを読む」がないものを見つけましたが、もうひとつ気になっていて修正したいな~と思うものがありました。

ブログを書いているときに できる という表現をすることが多いのですが、どうも変換すると 出来る のように漢字がはいったものになってしまいます。わたしとしてはあくまでも できる で統一したいので、気づく限りは直しているつもりなのですがたぶんたくさん残ってしまっていると思われます。

このように「ある文字が入っている投稿だけを見つけたい」ときは

こんな風に書いて抽出します。  post_content LIKE ‘%出来%’ という部分で 出来 という文字が入った投稿を抽出しています。この結果なんと、

177件も見つかってしまいました(^_^;。これはちょっと、、、手作業ではなくupdate文で直したいところですね。

おまけ:実際にやってみた結果を追加します

ここまでで終わりにしようと思ったのですが実際にやってみた結果をお知らせします。

ExcelからURLをクリックして編集画面に行く方法ですが私の場合1回目はうまくいくのですが2回目にログイン中にもかかわらずログイン画面が出てきてしまい、保存されてあるはずのパスワードで入ろうとしてもなぜか拒絶されてしまうという謎の現象がおこってしまいました。

これはblogを書くブラウザがFirefoxでそれでログインしている状態で、URLをクリックしたときに開くChromeでログインしようとしているから?なのかもしれません。あるいは最後にはログインも拒絶されてXSERVERのメッセージが出たので、XSERVERのなんらかのセキュリティのせいかもしれません。

クリックしなくてもD列にあるURLをコピペすれば編集画面にいけるので今回はFirefoxにURLをコピペして作業しました。

作業した後にもう一度SQLを実行してみました。

すると、このような結果になり、修正しなくてもいいと思った3つの投稿以外はすべて修正されたことが分かりました(^^)/

SQLで検索すると今まで気になっていた投稿を見直すことができるので、ぜひ試してみてください(^^)/

兎本美佳

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

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

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

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

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

トップへ戻る