YouTube | Facebook | X(Twitter) | RSS

カスタムフィールドによるページの URL 転送

2012/9/30 (日)

WordPress でニュース系の投稿ページを作成する場合、ページ自体には記事の実体が存在する必要はなく、単に別の URL へ転送したいだけの場合もあることでしょう。URL 転送用プラグインだと Redirection などがありますが、都度記事とは別の設定を行うと、記事自体の削除や元ページの URL 変更への対応が面倒です。 そんな場合のことを考え、カスタムフィールドを定義し、ページ内に URL を記述してページ転送する方法を作って作ってみました。元ネタはこちら

方法

  1. template_redirect でフックする
  2. is_singular() 関数などで転送する対象のページかどうかを判定
  3. 関数内でカスタムフィールド値を取得し、その値で wp_redirect() 関数を実行

サンプルコード

以下のコードを functions.php に書き加えます。このコード例では URL が正しくない場合無限ループするので注意してください。

// カスタム フィールド("redirect_url")によるURL転送
add_action('template_redirect' ,'wingfield_url_redirection',1);
function wingfield_url_redirection(){
	if(!is_home())
	{
		if(!is_archive())
		{
			if(!is_category())
			{
				if (is_singular())
				{
					$url =  post_custom('link_url');
					if($url != "")
					{
						wp_redirect($url);
					}
				}
			}
		}
	}
}

2013-10-10追記
アーカイブページの場合の考慮を追加。orで正常に動作しなかったので条件文を入れ子にしてます。

  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, Web