【WordPress/Gutenberg】旧エディタ記事をピックアップする方法

システム関係
この記事は約5分で読めます。
スポンサーリンク

要約

・WordPressはバージョン5から新エディタGutenberg

・旧エディタ形式の記事を新エディタ形式に書き直す

・旧記事のみをMySQLでピックアップする

スポンサーリンク

バージョン5からGutenbergが適用

WordPressご利用の皆さんはメジャーアップデートが5になってからエディタが変わったことはよくご存じかと思います。

そう、新エディタのGutenberg(グーテンベルク)

私は当初、非常に使いにくいので元のエディタを利用できるプラグインも検討したほどです。

でもしばらく新エディタを使っているうちに慣れてきたのと、意外とアリかもしれないと思うようになり、今ではバリバリ活用しています。

ブロックを並び替える機能、コンテンツ構造は直感的に確認できるようになり便利になったと感じています。

最近はリライトも兼ねて旧エディタ記事を新エディタ形式に修正していたのですが、人気記事を優先的に修正していたので、期間的 (2018年12月ごろまではV4の旧エディタ) に旧記事を絞ることができなくなってしまいました。

新エディタで書いた記事は文字列「wp:heading」で検索すれば標準の検索機能で絞ることもできるんですが逆の検索はできない。

そこでSQLの勉強もかねて、新エディタでのHTMLの特徴(wp:headingの文字列)と、MySQLの管理ツールであるphpMyAdminを利用して記事の抽出を行うことにします。

※管理ツールはDBを直接参照するのでご注意ください。自己責任でお願いします。

スポンサーリンク

対象記事(旧エディタ作成)のピックアップ方法

phpMyAdminを開く

私はXserverを利用しているのでXserverの管理画面から開くことにします。

他のレンタルサーバを利用されている方も今なら大体管理画面から開けるかと思います。

対象DBを開く

「データベース」タブをクリックし、WordPressで利用しているデータベース名をクリックします。

データベース名はレンタルサーバで環境構築時に作ったものです。Xserverならさっきの画像にある「MySQL設定」を開くと確認できます。

SQL画面を開く

「SQL」タブをクリックします。

SQL文を書いて実行する

SQLサンプル

サンプルコードは下記の通りです。一部個人設定(wp_postsの部分)があるので修正が必要です。

SELECT 
	`ID`, 
	`post_date`, 
	`post_modified`, 
	`post_title`, 
	`post_content` 
FROM 
	`wp_posts` 
where 
	`post_type` = 'post' 
	AND `post_status` = 'publish' 
	AND `post_content` not like '%wp:heading%' 
ORDER BY 
	`ID` DESC

説明

SELECT 
	`ID`, 
	`post_date`, 
	`post_modified`, 
	`post_title`, 
	`post_content` 
FROM 
	`wp_posts` 

wp_postsという記事のテーブルから、

ID
post_date:投稿日
post_modified:更新日
post_title:タイトル
post_content:内容

と言うフィールドを表示する記述です。

wp_postsの部分の”wp_”は初期設定時に決めたプレフィックスですので環境に合わせて変更してください。phpMyAdminの「構造」タブか、wp-config.phpで確認可能。

“wp_”と言うのは設定時変更していない場合の初期値です。通常初期値はセキュリティに問題があるので変更している(はず)。

where 
	`post_type` = 'post' 
	AND `post_status` = 'publish' 
	AND `post_content` not like '%wp:heading%' 

こちらで表示する条件を絞っています。

`post_type` = ‘post’

投稿タイプをpost(ポスト)、つまり投稿。最新バージョンのみ表示させたいのでこうします。これをしないと修正前の記事(変更履歴)もピックアップされてしまいます。

AND `post_status` = ‘publish’

投稿状態をpublish(パブリッシュ)、つまり発行。ゴミ箱データや一時データはいらないので絞ります。

AND `post_content` not like ‘%wp:heading%’

今回のポイントになる部分です。

Gutenbergで作成した記事には”wp:heading”という文字を含んでいます(HTMLのコメントアウトで)。

よって検索からその文字を含んだ内容を除外してあげればよいのです。

ORDER BY 
	`ID` DESC

これは記事を最新順に並びなおしているだけ。なくても大丈夫。

入力して実行

先ほどのサンプルを参考に入力し、「実行」ボタンをクリックしてください。

結果

実行すると結果が表示されました。

私の場合旧エディタで作成し、未修正の記事は46件あります。

ここまで出せれば後は出力するなり何なりとできますね。

普通にプラグインか何かでできるかもしれませんが今回はSQLで検索したお話でした。

タイトルとURLをコピーしました