1

WordpressでページとURLパラメータを使用してカスタムリダイレクトを書きたいと思います。基本的に/property/ABC123index.php?pagename=property&my_id=ABC123に行きます。これは私が持っているものですが、私は正規表現がオフだと思います。WordpressのURLを、文字と数字の両方を使用するクエリ変数で書き換えるにはどうすればよいですか?

public function custom_rewrite_tag() { 
    add_rewrite_tag('%my_id%', '([^&]+)'); 
} 

public function custom_rewrite_rule() { 
    add_rewrite_rule('^property/([^/]*)/?', 'index.php?pagename=property&my_id=$matches[1]', 'top'); 
} 

add_action('init', [$this, 'custom_rewrite_tag'], 10, 0); 
add_action('init', [$this, 'custom_rewrite_rule'], 10, 0); 

私のパーマリンクはリフレッシュされましたが、これは機能しません。私もアンダースコア(myid)を削除しようとしましたが、それもうまくいきませんでした。私は間違って何をしていますか?

+0

「機能しません」とはどういう意味ですか?あなたは404を手に入れていますか?エラー?他に何か? – maiorano84

+0

@ maiorano84パラメータが選択されていません。 'error_log($ _ GET ['my_id'])'は 'false'を記録します。ただし、書き換えを行わずにパラメータを追加すると( 'http://example.com/property?my_id = ABC123')動作します。 –

答えて

0

add_rewrite_tagドキュメントから:定義された書き換えタグに書き換えのURL

の値を取得

、あなたは今のWordPressの$ wp_query変数を使用して書き換えたクエリ文字列変数の値を取得することができます。書き換えのうち、上記のタグの値を取得するには、ページ・テンプレートに次のように使用できます。書き換えられたURLに$ _GETを使用する場合でも、動作しないことに

$wp_query->query_vars['film_title'] 

注意を書き換えにはクエリ文字列変数が含まれます。 $ wp_queryを使用する必要があります。念頭に置いて

、あなたはそうのようなテンプレートであなたの変数にアクセスすることができるはずです。

... 
global $wp_query; 
var_dump($wp_query->query_vars['my_id']); 
... 

それでも問題が解決しない場合は、もう少しであるためにあなたの正規表現を変更してみてください特定。この場合、我々は英数字のみを受け入れている:

public function custom_rewrite_tag() { 
    add_rewrite_tag('%my_id%', '([a-zA-Z0-9]+)'); 
} 

public function custom_rewrite_rule() { 
    add_rewrite_rule('^property/([a-zA-Z0-9]+)/?', 'index.php?pagename=property&my_id=$matches[1]', 'top'); 
} 

add_action('init', [$this, 'custom_rewrite_tag'], 10, 0); 
add_action('init', [$this, 'custom_rewrite_rule'], 10, 0); 

このことができますなら、私に教えてください。

+1

まあ、私は愚かだと感じます。それはいつも働いていた。私はそれを不適切にテストしていただけです。私は完全に$ _GET'をクエリ変数で使うことができないことを忘れています。私に思い出させてくれてありがとう! –

+0

私たちの最善を尽くす、brotato。それは簡単な間違いです。 – maiorano84

関連する問題