SQLでWordPressの記事を正規表現検索してMarkDown形式にする – 簡単にWordPressブログの記事リンクを取得する方法

    >


https://yuis.xsrv.jp/data/GIF_urIHcAtjj3QgdqTgOP8kg8cBRms8GmPn.gif



前書き

WordPressでブログ書いてていつも思うことがありまして、

“内部リンク全くしてないなー……”と。

内部リンクはSEO的にも結構重要な要素でして、例えば、”こちらの記事でこれについては詳しく説明しています:[URL]”みたいな文章を書いたとして、このURLがクリックされまくると、このURLのSEOは上がるんですね。
でも、こういうことをするのって、結構労力がかかるものです。
普通にやろうとしたら、WordPressのサイトに行って、検索窓から関連してそうな記事を探すべく文字列を入力して検索して、出てきた記事を開いて、その記事が関連している記事だった/紹介したい記事だった場合にはそのURLをコピーして、タイトルもコピーして、Markdown形式にして、テキストエディタにペーストしてやっと完成するわけです。軽く3分以上かかりますよね。

なので僕は今まで、こういう内部リンク的な作業は全く無視していたんですが、最近メインブログ及びこのプログラミングブログの方も結構見てくださる方が多くなってきたので、もう少し記事の質を上げたいな(んでもってSEOも上げたいな)と思った次第です。

では、実装していきます。

準備

mysql workbenchを使用します。

Windows10でMysqlクライアント「Workbench」を使う
WorkbenchでxserverのMysqlに接続する方法

(↑こちらは初めてこの理論で作成したMarkDownになります。我ながら便利すぎる………。思いついてからリンクを貼るまでに20秒とかかりません!)

初歩的なことですが、SQLを使用してデータベースを操作しますので、WordPressをホスティングしているサーバーにworkbenchから接続してやる必要があります。

WordPressの記事を正規表現検索してタイトルとURLをコピペする

まず、workbenchの仕様として、…まぁ説明しだすとキリがないのですが、今回使用する仕様としては、selectで出力したテーブルのレコードをCSV形式でクリップボードにコピーすることができるってことです。

e.g.

'Windows10でMysqlクライアント「Workbench」を使う', 'https://yuis-programming.com/?p=566'
'WorkbenchでxserverのMysqlに接続する方法', 'https://yuis-programming.com/?p=564'

これを出力するために、以下のSQLをworkbenchに貼り付けて実行します。(ctrl+Enter)

SQLはとても簡単です。

USE yuis_programming2 ; # データベース名

select post_title, guid from wp_posts
    where (post_type='post' OR post_type='page')
        AND (post_status='publish' OR post_status='future')
        AND (post_author='1')
        AND post_title REGEXP "ruby"
        AND post_content REGEXP "."
    order by post_date desc
            ;        

上の例では、記事タイトルに対して”ruby”で正規表現検索していますので、記事タイトルに”ruby”を含む記事が出力されます。
同じく、post_contentが本文ですので、本文に対して正規表現検索をしてやることももちろん可能です。

で出力結果はこんな感じになるかと思います。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_fe85f646-c555-49f7-83fc-e1c98d95f4dd.png

で、markdownがほしい記事を選択して、ここから、copy rowをして、コピーします。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_50d99407-1cab-4d7b-8773-f3bc765e221e.png

これで、先程のCSVがコピーされました。

CSVをMarkDown形式にする

では、続いてコピーしたCSVをMarkDownにしたいと思います。

WSL bashを使用します。

以下を.bashrcに入れるかターミナルにペーストしてください。

(| clip.exeってところが、windowsにコピーするっていう意味になります。ここらへんはubuntuやらmacやらでそれぞれコピーコマンドがありますので、それに変えてくださいね。)


sqlToMarkdown(){
  cat > /tmp/sqlToMarkdown.txt
  sed -Ei "s/'(.*)',\s?'(.*)'/\[\1\]\(\2\)/g" /tmp/sqlToMarkdown.txt
  sed -Ei 's/\\"/"/g' /tmp/sqlToMarkdown.txt
  cat /tmp/sqlToMarkdown.txt | clip.exe
}

alias sqlmd='sqlToMarkdown'

これで、sqlmdを実行した後、ctrl+Vでペーストします。

$ sqlmd
'Windows10でMysqlクライアント「Workbench」を使う', 'https://yuis-programming.com/?p=566'
'WorkbenchでxserverのMysqlに接続する方法', 'https://yuis-programming.com/?p=564'

$

すると…

[Windows10でMysqlクライアント「Workbench」を使う](https://yuis-programming.com/?p=566)
[WorkbenchでxserverのMysqlに接続する方法](https://yuis-programming.com/?p=564)

なんと!MarkDownが出来上がってしまいましたね!

まとめ

これで内部リンク対策が捗るよ!やったね!

WSL WSL bash on ubuntu on windows インストール手順
WSL(Windows Subsystem for Linux)を初期から使っている僕がLinuxやプログラミングの初心者向けにWSLのメリットを解説してみる



お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


Close Menu