ページの転送と言えば、.htaccessファイルに直書きするのが基本だと思っていましたが、WordPressには便利な関数があるのでメモとして公開しておきます。

特定の固定ページや投稿などへのアクセスを他のページへリダイレクトさせたいときに便利です。

ちなみにこのサイトではダウンロードコンテンツの管理に使用している「Simple Download Monitor」プラグインに直接アクセス拒否を確実に行う機能がなかったので、本ページのコードを元に実装しています。試しに「Twenty Twenty-Twoテーマの子テーマ」のダウンロードコンテンツページへアクセスすると「Twenty Twenty-Twoの子テーマダウンロードページ」という固定ページへ転送されるようにしていますので、試してみてください。

特定のページをリダイレクトさせる方法

以下が基本的なコードの体系です。有効化しているテーマのfunctions.phpへ追加して使用します。

function sample_specific_page_redirect() {
	if( is_single('投稿や固定ページのID') ){
		$url = '転送先のURL';
		wp_safe_redirect( $url, 301 );
		exit();
	}
}
add_action( 'template_redirect', 'sample_specific_page_redirect' );

このコードでは「投稿や固定ページのID」へアクセスがあった場合に、「転送先のURL」へ「301(恒久的な転送)」を行います。

・転送先のURLは「//」以降のみを入力すると「http」と「https」を自動判別してくれます
・あまり使わないと思いますが、一時的な転送の場合は「301」を「302」に変えます

「投稿や固定ページのID」の調べ方が分からない方は、以下を参考にしてみてください。

また、複数のリダイレクトを行う場合は以下のようにします。

function sample_specific_page_redirect_multi() {
//リダイレクト1
	if( is_single('投稿や固定ページのID') ){
		$url = '転送先のURL';
		wp_safe_redirect( $url, 301 );
		exit();
	}

//リダイレクト2
	if( is_single('投稿や固定ページのID2') ){
		$url = '転送先のURL2';
		wp_safe_redirect( $url, 301 );
		exit();
	}
}
add_action( 'template_redirect', 'sample_specific_page_redirect_multi' );

要は関数内に以下の部分を追加していくだけですね。

	if( is_single('投稿や固定ページのID') ){
		$url = '転送先のURL';
		wp_safe_redirect( $url, 301 );
		exit();
	}

参考:WordPress 任意のページへリダイレクト