気になる言葉ショップ

気になる言葉ショップでは、管理人のわがままで選ばれた気になる言葉ごとのオンラインショッピングコーナーを設けています。
Home > wordpress >
追加したクエリをパーマリンクに

追加したクエリをパーマリンクに

追加したクエリを、「パーマリンクの設定」を行なった場合には、パーマリンクで表現するようにしましょう。
基本的には、パーマリンクからクエリ式のURLへ変更するリライトルールを追加すればいいです。

リライトのルールは、フィルターを使って追加します。
add_filter(‘rewrite_rules_array’, ‘自分の関数’);

initフィルターで、flush_rules()を実行する必要がありますが、この関数は、処理が遅いので、変更がある場合のみ実行するようCodexにありますので、既にあるかチェックして実行するようにしてあります。

例:/shop/なんたらを?almighty=なんたらに

function almighty_rewrite_rules_array($rules){
        global $add_cutom_post_rules;

	if ( $add_cutom_post_rules && is_array( $add_cutom_post_rules ) ) {
		$rules = array_merge( $add_cutom_post_rules, $rules );
	}
        return $rules;
}
add_filter('rewrite_rules_array', 'almighty_rewrite_rules_array');

function myposttype_rewrite() {
	global $wp_rewrite, $add_cutom_post_rules;

	if ( ! $wp_rewrite->using_permalinks() ) { return; }

	$dir = 'shop' ;
	$rules = $wp_rewrite->wp_rewrite_rules();
	$add_cutom_post_rules = array();

	if(isset($dir) && ($dir != "")){
		$regex = $dir. '/?$';
		$add_cutom_post_rules[$regex] = $wp_rewrite->index . '?almighty=top';
		$regex = $dir. '/([a-z]{3})([^/]+)/?$';
		$add_cutom_post_rules[$regex] = $wp_rewrite->index . '?almighty=$matches[1]$matches[2]';
		$regex = $dir. '/([a-z]{3})([^/]+)/page/([0-9]+)/?$';
		$add_cutom_post_rules[$regex] = $wp_rewrite->index . '?almighty=$matches[1]$matches[2]&paged=$matches[3]';

        	foreach ( $add_cutom_post_rules as $regex => $rule ) {
			if ( ! isset( $rules[$regex] ) ) {
				$wp_rewrite->flush_rules();
				break;
			}
        	}
	}
}
add_action('init', 'myposttype_rewrite');

参考:関数リファレンス/WP Rewrite
WordPressのカスタム投稿タイプのアーカイブをパーマリンクで表示できるようにしてみた

Comments are closed.