web-dev-qa-db-ja.com

クエリ文字列パラメータに基づいて「ページ」URLを書き換えるにはどうすればよいですか。

私は以下のページを持っています。それは単一の投稿と多くのコメントを含みます:

http://mysite.com/tips

ユーザーがコメントを投稿したら、それにメタデータを追加して、次のURLを使用してコメントを絞り込むことができます。
http:// mysite/tips?id = cat&filter_id = 1
http:// mysite/tips?id = dog&filter_id = 2

代わりに次のURLを使用したいです。
http:// mysite/tips/cat
http:// mysite/tips/dog

ヒントページには、クエリ文字列パラメータに基づく投稿のリストが表示されます。

私は私が必要としているように思われたこのチュートリアルを通して働きました、しかし、私が私のURLをタイプインするとき、私はページが見つかりませんエラーを得ます。 http://thereforei.am/2011/10/28/advanced-taxonomy-queries-with-pretty-urls/ /

これは可能ですか?

1
user1491819

次のような書き換え規則を追加できます。書き換えルールの変数が認識されるように、必ずパブリッククエリの変数をWordPressに登録してください。

add_rewrite_rule('^(tips)/([^/]*)/([^/]*)/?', 'index.php?name=$matches[1]&id=$matches[2]&filter_id=$matches[3]','top');

add_filter('query_vars', 'foo_my_query_vars');
function foo_my_query_vars($vars){
    $vars[] = 'id';
    $vars[] = 'filter_id';
    return $vars;
}

パーマリンクをフラッシュするには、パーマリンク設定ページにアクセスしてください。

次のようにして変数にアクセスできます。

$id = get_query_var('id');
$filter_id = get_query_var('filter_id');

あなたは、まったく機能しない1つのURIセグメントを持つ2つの動的変数を持ちたいのです。上記の書き換え規則はtips/cat/1(1はfilter_id)に対して有効です。

あなたのルールをテストするために、 Monkeyman Rewrite Analyzer を使うことを強く勧めます。

これがあなたを助けてくれることを願っています!

1
Brian Fegter

add_query_arg機能を使うことができます。

add_query_arg('filter_id', 1);
add_query_arg('filter_id', 2);

URLは次のようになります。

http://mysite/tips/cat?filter_id=1

http:// mysite/tips/dog?filter_id=2

引数の値は次のようにして取得できます。

$id = get_query_var('id');
$filter_id = get_query_var('filter_id');

これは ですadd_query_argに関するより詳しい情報

0
robin