ページの転送と言えば、.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();
}
コメントを残す