WordPressの記事内に貼ったURLを一括置換するブックマークレットを作った

先日、7年運営が続いているこの個人ブログのドメインを変更しました。

その時の記事が以下
【今更すぎる】takelab.noteのドメインを変更しました【独自ドメイン設定】


ロリポップレンタルサーバーで設置したWordPressだったので、デフォルトのURLのままでした。

設定→一般→WordPressアドレス(URL)とサイトアドレス(URL)を書き換えた
設定→一般→WordPressアドレス(URL)とサイトアドレス(URL)を書き換えた

その時はWordPressがデフォルトで備えているWordPressアドレス変更機能を利用して記事URLを書き換えたのですが、

過去に投稿してきた記事の中に、自分の記事のリンクを貼っていたりしたために、

記事内のURLリンクを踏むと古いドメインのブログにアクセスし、WordPressによって301リダイレクトされてページの表示に時間がかかってしまう、

という事象が起きていました。

そこで、

記事内URLを書き換えるブックマークレットを作りました。

サクッと調べてサクッと作ってみました。久々のJavaScript。

/**
* bookmarklet
*
* compressor:http://refresh-sf.com/
* javascript:!function(){var e="https://wandering-engineer.tech",n=document.getElementById("content"),t=n.value,l=t.replace(/http\:\/\/*******\.***\.jp/g,e);,n.value=l,console.log("またつまらぬものを置換してしまったか・・・")}();
*/
(function(){
var replaceString = "https://wandering-engineer.tech";// 変更後URL
var wpContent = document.getElementById('content');// WordPress編集画面の記事エリアオブジェクト
var contentStr = wpContent.value;// 記事エリア文字列取得
var replacedContent = contentStr.replace(/http\:\/\/*******\.***\.jp/g, replaceString); // セキュリティを考慮して一応マスクしています
wpContent.value = replacedContent;
console.log("またつまらぬものを置換してしまったか・・・"); // 動作確認用なのでいらない
})();

「ブックマークレット」についてはお調べいただくとして、使い方は簡単、というか単純。

ポイントは2箇所です。

var replaceString = "https://wandering-engineer.tech"; // 変更後URL
var replacedContent = contentStr.replace(/http\:\/\/*******\.***\.jp/g, replaceString); // セキュリティを考慮して一応マスクしています

ここでブログの古いドメインを正規表現で指定しています。
(もしお使いになる場合は上記2箇所をご自身のものに置き換えてご利用ください)

それをやった上で適当なjavascript圧縮サイトで圧縮を行って、その圧縮したscriptをブクマに追加して適当な名前をつけておく。(ブックマークレットの追加)

↑編集画面でそのブックマークレットをポチると、記事エリア内の対象URLを、変更後URLに変更してくれます。

すっごく簡単なbookmarkletのわりに、他にいくらでも応用が効きます。

http→httpsのURL変更(ここではドメイン変更のみ)などにも応用できます。


注意

用法用量を正しく守ってお使いください。

※WordPressのバージョンが変わったりすると動かなくなる可能性があります。
※想定通りの挙動はしない可能性がございます、自己責任でお願いします。

本当は気合入れて、DBに格納されている記事内のURLを一括置換するプラグインも開発したかったのですが、

それをやると結構なコストがかかってしまいそうだったのでやめました。
かわりにこの誰にでも作れそうな、かつ単純なものを使ってみました。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください