web関連

【wordpress】特定のURLにアクセスしたら特定のページにリダイレクトをかける方法

【wordpress】特定のURLにアクセスしたら特定のページにリダイレクトをかける方法

ブログ村とかブログランキングみたいな外部サイトに最新記事にリンクする固定URLが欲しいなぁってなって調べた時の備忘録

やりたいこと

ページを持たない適当なURLにアクセス

指定したページにリダイレクト

functions.phpに記述

「wp_redirect()」という関数があるのでそれ使ってリダイレクトかける

add_action( 'get_header', 'recent_article_redirect' );
function recent_article_redirect(){
  $url = $_SERVER['REQUEST_URI'];//現在ページ取得
  //最新記事(投稿)取得
  $myposts = get_posts( "post_type=post&orderby=date&order=DESC&posts_per_page=1" );
  wp_reset_postdata();

  //URLに「recent_article」という文字列を持っていたら最新記事にリダイレクト
  if(strstr($url,'recent_article')){
    wp_redirect( get_permalink($myposts[0]->ID) , 301);
    exit;
  }
}
カスタム投稿の時は「post_type=post」の部分変えてね

日本語の入るURLの場合

日本語がURLに入るとエンコードされちゃうので「urlencode()」を使って日本語にエンコードし直す必要性がある

$url = urldecode($_SERVER['REQUEST_URI']);
…
if(strstr($url,'これはテスト')){
…
}
「urlencode()」を使えばURLに日本語含まれていても検索できるようになるよ

メモ:日本語(マルチバイト)を扱うときは「strpos()」使う?

今回文字列を含むか含まないかの条件分岐で使った「strstr()」以外に「strpos()」とかいうのがあったからメモ

どちらも使い方的には一緒だけど

strstr('検索対象の文字列','検索ワード')
strpos('検索対象の文字列','検索ワード')

条件分岐で使うとき注意

if(strstr('検索対象の文字列','検索ワード')){
	//検索ワードが含まれる
}
if(strpos('検索対象の文字列','検索ワード')!== false){
	//検索ワードが含まれる
}

「strpos()」はfalse判定するのか「!== false」を使わないと思っていた結果と逆になるから注意

よく調べてないから用途の違いはわからんが( ..)φメモメモ

結構需要があると思うんだけど記事みっかんなかった
テンプレートで用意する方法なんかもあるけど余計なファイル増やしたくないからfunctions.phpに書くようにした

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。