web-dev-qa-db-ja.com

なぜワードプレスはまだ私のクエリvarを取り除きますか?

私はかなりのパーマリンクでカスタムページテンプレートにクエリ変数を渡そうとしています。

だから基本的に私は "アルバム"というページがあります。そしてそのページに "type"という名前のクエリvarを渡したい。したがって、きれいではないバージョンはmywebsite.com/index.php?p=97&type=vinylになります。

「かわいい」バージョンはmywebsite.com/albums/vinylsになります

そしてテンプレートはその変数(つまりレコード)を取得する必要があります。

私はこの一日中たくさん読んだことがありますが、それでもうまくいくことはできません。それで、私はここである種の魂が私を助けてくれることを望んでいました。

だから最初の私は私のfunctions.phpに書き換えを追加します。

function addrewrite() {
    add_rewrite_rule( '^albums/([^/]+)/?$',
    'index.php?p=97&type=$matches[1]',
    'top' );
}
add_action('init', 'addrewrite');

私はそれがすべての書き換えのvar_dumpを取得する場合それが現れるのを見ることができるようにこれは動作するようです。

今私がテストをし、私のブラウザにmywebsite.com/albums/vinylをタイプすればワードプレスは最後の「ビニル」を取り除く。私はクエリvarも登録する必要があるからです。だから私は次のコードでそれをやった:

add_filter('query_vars', 'add_my_var');
function add_my_var($public_query_vars) {
  $public_query_vars[] = 'type';
  return $public_query_vars;
}

それから私は設定 - >パーマリンクで保存を押すことによってパーマリンクをフラッシュしましたそれでも、ワードプレスはまだ私のURLを削除します。

私はここで何が足りないのですか?

3
Malibur

ページの場合は、p=97page_id=97またはpagename=albumsに変更します。 ppost投稿タイプのためのものです。

また、クエリ変数をよりユニークなものに変更することをお勧めします。

2
Milo