良い形で読者に情報を届けたいので、色々と手直しをしています。 現在このブログの資産整理をしています。その工程の一つとして、カテゴリの分類の粒度を粗くしたい。つまり上位概念を付けて、カテゴリ数を減らしたいということを考えたので、いざやろうとしたところ、記事数が300件以上ありました。300件程度地道にやってやるぜと思ってたのですが、30分経過したところで、やってられるかとなりましたので、多分こう思う人が私の他にもいるかもしれないので、自分がやった方法を記しておきます。
INDEX
WordPressの既存の一括変更機能を利用
まずは管理画面の投稿一覧から一括変更機能を利用しようと思いました。プラグインが利用できるのかを調べるのも面倒なのでこの方法を採用しようと思いました。
画像が分かりづらいので、方法をまとめます。
- まとめて変更したい記事にチェックを入れる
- プルダウンで、編集を選択する
- 適用ボタンをクリックするとダイアログが出力される
- 出力されたダイアログから追加したいカテゴリを選択する
- カテゴリが追加された状態で操作を行った投稿一覧ページに遷移する
4番のキャプチャがないので添付します。
こんな感じで、選択したWordPressの記事のカテゴリを一括で変更することができます。が、これには弱点があります。
WordPressの管理画面の投稿の添付した画像のとこ、これって、UI的に入力したページ一覧に飛べると思じゃないっすか。この場合5ページ目。だけど、>を押しても>>を押しても飛べないんですよ!指定したページにっっ!!情弱なだけかしら…。 pic.twitter.com/7tqhvTwzdO
— ぴよコーチ (@mesipiyo) November 7, 2019
操作ミスして1ページ目に戻った時にページ送りがうまく機能しないので、禿げる程面倒臭いという弱点があることと、この機能はカテゴリの追加しかできないということです。
- 操作ミスした時のページ送りが面倒な点
- カテゴリの追加しか行えない点
便利なWordPressプラグインの選定
Batch Catというプラグインが評判良いので、これを利用することにして、プラグイン検索してみたところ、このプラグイン最終更新が8年前でした。動くか心配だったので、利用実績はいつが最新なんだと調べてみたところ、2019年での利用実績が確認できたので、大丈夫だろうと利用することにしました。
WordPressプラグインBatch Catの問題点
最終更新が8年前なのが既に問題な気がしますが、えいやと利用してみることにしました。自分のWordPressはプラグインが10個くらい入ってますが、 PHPのエラーで処理が止まったことにより画面が白くなることはなかったので、そのどれとも競合せず、インストールできました。が、問題が発生しました。
この通り15件程度しか記事の出力がされず、WordPress管理画面の投稿一覧より僅かに少ないのです。これでは、さっきの面倒臭いデメリットがよみがえってしまいます。カテゴリ探すのはずいぶん楽になりますけれど。
この記事全部出せたら嬉しいのにな
これはもう改造するしかないということで、コードを触ることにしました。ここのリストの出力なので、WordPressにクエリ発行してるプログラムが怪しいということで、該当箇所を特定しました。
// WordPressルートからのパスはwp-content/plugins/batch-cat/admin.php
function bcat_build_query_string()
{
$options = get_option('bcat_options');
$querystr = 'post_type=post';
$querystr .= '&posts_per_page='.$options['bcat_posts_per_page'];
# $querystr .= '&posts_per_page=-1';
$querystr .= '&paged='.(isset($_GET['paged']) ? $_GET['paged'] : 1);
$querystr .= '&orderby='.(isset($_GET['sort']) ? $_GET['sort'] : 'post_date');
$querystr .= '&order='.(isset($_GET['order']) ? $_GET['order'] : 'desc');
$querystr .= '&cat='.(isset($_GET['cat']) ? $_GET['cat'] : '');
$querystr .= '&s='.(isset($_GET['s']) ? $_GET['s'] : '');
return $querystr;
}
ハイライトした行に対して、posts_per_pageを-1とするかどうかは皆さんご判断にお任せします。
改造を加えた結果記事が山ほど出力されるようになりました。記事に対してカテゴリの追加を行ってみましたが、問題なく行えました。しかし、これはあくまで、私が実施した結果となりますので、皆様実施する際は、リスクを考慮して行ってください。事故があっても責任は負いかねますのでご了承ください。
画面いっぱい、記事で埋まりました。スクロールは長くなりますが、
- ページングしなくていい
- ページのコミット(サブミット)回数が減る
上記理由より、作業の効率化と、あと本当に大したことないですがDBへの負担軽減になります。
Batch Catの使い方説明されてないけど。
BatchCatの利用方法は、Excelでの作図を用いて説明します。 表計算ソフトですけど、Excel便利ですよね。まず、一番最初は、画面上部のキャプチャになります。これは読んで字のごとくで、この条件でソートしたり抽出したりできます。Search押せば検索が実行されます。
次は画面中段の明細部分になります。①の箇所は記事で、②の箇所はカテゴリになります。
①で選択した記事に対して、紐づけるカテゴリを②で選択するという利用をします。次は画面最下部に存在する、それぞれのコミット(サブミット)ボタンの役割を説明をします。
書いてあることがどういうことなのか、ボタン毎に確認していきましょう。
Set categories to posts | ②で選択したカテゴリに①のカテゴリを変更します。既存で設定されている①のカテゴリ名は消滅します。 |
Add categories to posts | ①のカテゴリに②で選択したカテゴリを追加します。 |
Drop categories from posts | ①のカテゴリを②で選択したカテゴリに応じて削除します。 |
こういうことになります。実現したいことに合わせて、下記を選択いただければよいと思います。
以上です。