web
2019.07.20

記事のURLを定期的に自動変更する方法【WordPress】

こんにちは、webエンジニアのゾノ( @ozonosho )です。

2,3か月前からココナラを始めた影響で、最近はちょっとした機能の開発が増えました。ブログのネタがたくさんあるので、また少しずつ書いていこうと思います。
(ココナラは数十万円の案件もチラホラくるのですごいです!)

今日のブログではWordPressで記事のURLを定期的に自動変更する方法を紹介したいと思います。

利用ケースとしては、
・indeedなどロボット巡回型の記事紹介サイトで同じ記事を定期的に新着掲載させたい
という要望からの依頼でした。

たしかに、手動だと大変なので自動化できると楽そうです。

WordPressで記事のURLを定期的に自動変更する方法

今回の依頼内容
https://〇〇〇/recruit01
https://〇〇〇/recruit02

上記のようにスラッグの中に「recruit」が含まれる記事のURL末尾に、現在日付を足して定期的にURLを自動変更させたい。

(自動変更後)
https://〇〇〇/recruit01_20190720
https://〇〇〇/recruit02_20190720

実装手順としては、

  1. 現在のすべての記事のURL末尾を変更する関数を作る
  2. 作った関数をwp-cronで定期実行する

という流れになります。

①現在のすべての記事のURL末尾を変更する関数を作る

今回のケースだとfunctions.phpに下記のようなソースを追加します。

※1について
ここではpreg_matchを利用してスラッグ内に文字列「recruit」が含まれている記事のみを対象にしていますが、すべての記事を対象にする場合は「if(preg_match)~」のif文は消しちゃってください。

※2について
過去にURLが自動変更された記事のURLは「https://〇〇〇/recruit01_日付」となっているので、日付のついているURLの場合には一度URLから「_日付」を取り除いたうえで最新の日付をURLに追加するようにしています。

※3について
最後に、作った関数をWordPressの疑似cron「wp-cron」で呼び出すためにアクションフックにしておきます。

②作った関数をwp-cronで定期実行する

関数さえ作ってしまえば、あとはwp-cronにアクションフックを登録するだけです。

functions.phpに下記のようなソースを追加します。

※1について
wp_schedule_eventの引数は「第1引数:最初に実行する時間」「第2引数:実行間隔」「第3引数:実行する処理のフック名」です。今回は毎日実行する処理だったのでdailyとしましたが、毎時や毎週などの設定も可能です。

おわりに

以上、今回の記事ではWordPressで記事のURLを定期的に自動変更する方法でユーザー権限の名称を変更する方法を紹介させていただきました。

当サイトではWordpressのカスタマイズ制作依頼を請け負っています。運営中のサイトで何かお困りのことがある方は、下記の記事を参照のうえ気軽にご相談ください。

どんな機能・要望でもOK!『Wordpressのカスタマイズ制作』はじめました。

こんにちは、webエンジニアのゾノ( @ozonosho )です。 このたびWordpressのカスタマイズ制作をはじめました。......

→この記事を読む

ゾノについて

興味ある方を探しています!