2017-10-23 16 views
0

私のURLの先頭にクエリ変数を追加しようとしています。言語管理モジュールが通常行うURLの言語コードの追加のようなものです。URLの先頭にクエリ変数を追加します(ベースURLの後)

http://example.com/cities/newyork/?p=1

この1でいただきまし表示するには:

http://example.com/?p=1

と変数として街を取得する私は、このURLが欲しい例えば

そして、流れ関数の値:

get_query_var('city_name'); 

実際にはwordpressが都市/ newyorkを無視して以前と同じように動作するようにします。

私は私のfunction.phpにこのコードを試してみましたが、それは正しく動作していないです:

add_action('init', function() { 
    add_rewrite_rule('^cities/([a-z]+)/?', 
     'index.php?city_name=$matches[1]', 
     'top'); 
}, 10, 0); 
add_filter('query_vars', 'wpse26388_query_vars'); 
function wpse26388_query_vars($query_vars){ 
    $query_vars[] = 'city_name'; 
    return $query_vars; 
} 

答えて

0

(あなたは、追加、変更、または1つを削除した場合)、書き換えルールとトリックがそれらが変更されているときということです、 WordPressにリストの更新と再構築を指示する必要があります。そのためには、あなたは私の変更を管理エリアに固定リンクオプションのページをご覧いただくか、flush_rewrite_rules()

// Add the rewrite rule and flush on plugin activation 
add_action('init', function() { 
add_rewrite_rule('^cities/([a-z]+)/?', 'index.php?city_name=$matches[1]', 'top'); 
flush_rewrite_rules(); 
    }, 10, 0); 
+0

機能を使用することができますいずれかのサイトを行うと問題がフラッシュ書き換えルールではないされています。私は都市/都市名が使用されていればそれを取り込みたい。 –

+0

あなたは無視してどういう意味ですか? –

+0

cities/citynameを無視しないと、/?p = 1には移動しません。それは都市のページを取得しようとし、それをキャッチすることができないとき、それは404ページを表示します。 将来のキャッチのためにcitynameをクエリ変数に格納して、ルーティングプロセスを取得しますか?p = 1 –

関連する問題