クエリ文字列パラメータが書き換えルールで失われる
-
-
ページテンプレートのパラメータをどのように取得していますか?おそらく問題はそこにあります.How are you retrieving the parameter in you page template? Perhaps the issue is there.
- 0
- 2011-08-22
- montrealist
-
書き直しでよろしいですか?そして、single-book.phpに何かありますか?そのファイルで文字変数をどのように取得していますか?Are you sure it's something with the rewrite? And something in single-book.php? How are you getting the letter variable in that file?
- 0
- 2011-08-22
- chrisguitarguy
-
@dalbaebああ、これは元の投稿にあるはずです.で編集しました.@dalbaeb Ah, this should have been in the original post. I've edited it in.
- 0
- 2011-08-22
- Rebecca Chernoff
-
@ChristopherDavisああ、これは元の投稿にあるはずです.で編集しました.@ChristopherDavis Ah, this should have been in the original post. I've edited it in.
- 0
- 2011-08-22
- Rebecca Chernoff
-
1 回答
- 投票
-
- 2011-08-22
問題はおそらくフロントエンドコードだと思います.
これを試してください:
<?php if( $letter = get_query_var( 'letter' ) ) { echo 'Current Letter: ' . $letter; } else { echo 'Current Letter: All'; }
I think it's probably your front end code that's the problem.
Try this:
<?php if( $letter = get_query_var( 'letter' ) ) { echo 'Current Letter: ' . $letter; } else { echo 'Current Letter: All'; }
-
いいえ.):URLはまだ `/books/the-dictionary`として終わり、qs varをプルするすべての(現在は3つの)方法は空です.Nope. ): The url still ends up as `/books/the-dictionary` and all (now 3) ways of pulling the qs var are empty.
- 0
- 2011-08-22
- Rebecca Chernoff
-
これは一種のロングショットですが、 `functions.php`の最初の2つの関数(`my_init`と `add_books_rewrite`)をhttp://pastie.org/2411828に置き換え、add_filter( 'init'を削除します...)行.次に、パーマリンク設定ページに移動して[保存]をクリックして、手動で書き換えルールをフラッシュしてみてください.This is sort of a long shot, but replace your first two functions in `functions.php` (`my_init` & `add_books_rewrite`) with this: http://pastie.org/2411828 and delete your add_filter('init' ...) line. Then try manually flushing your rewrite rules by going to your permalinks settings page and hitting save.
- 0
- 2011-08-22
- chrisguitarguy
-
また、 `add_rewrite_rule`正規表現の最後にあるドル記号も削除してみてください.And you may want to try deleting the dollar sign at the end of your `add_rewrite_rule` regex as well.
- 0
- 2011-08-22
- chrisguitarguy
-
それで、あなたは物事が大丈夫であることを示すリライトアナライザーが赤いニシンだと思いますか?うーん、やってみます.So you think the Rewrite Analyzer indicating things are ok is a red herring? Hmm, will try.
- 0
- 2011-08-22
- Rebecca Chernoff
-
ええ...変化はありません.Yeah...no change.
- 0
- 2011-08-22
- Rebecca Chernoff
-
WPがURLをリダイレクトしているのは奇妙だと思います.おそらく、正規の書き換えと関係があります.add_rewrite_endpointの使用についてはどうですか:http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint'add_rewrite_endpoint( 'letter'、EP_PERMALINK); `.add_rewrite_ruleの代わりにそれを使用して、何が起こるかを確認してくださいI just find it weird that WP is redirecting the URL -- probably something to do with the canonical rewriting. What about using add_rewrite_endpoint: http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint 'add_rewrite_endpoint( 'letter', EP_PERMALINK );`. Use that instead of add_rewrite_rule and see what happens
- 0
- 2011-08-22
- chrisguitarguy
カスタム投稿タイプを正常に追加しました.パーマリンク構造はうまく機能します.たとえば、カスタム投稿タイプ
books
があり、本へのパーマリンクは/books/the-dictionary
です.私の
single-book.php
ページテンプレートは、letter
パラメータを受け入れて、ページに表示されるコンテンツをカスタマイズします./book/the-dictionary/q
のようにこれにリンクできるようにしたいと思います.テーマのfunctions.phpファイルに以下を追加しました:
上記のフラッシュコードを使用し、手動でパーマリンク設定ページに移動して保存し、正規表現の愚かなエラーを修正するのに数回の試行が必要でしたが、最終的には Jan Fabry's のすばらしいアナライザープラグインを書き換える.
それで、ここからは順風満帆だと思いますよね?ええ...正確ではありません.
サイトを読み込んで
books/the-dictionary/q
に移動すると、the-dictionary
コンテンツは正しく読み込まれますが、パラメータが失われます.私が興味深いと思うのは、index.php?pagename=the-dictionary&letter=q
をロードすると、すべてがうまく機能することです.パラメータを取得するために、次のコードがあります:
$_SERVER["QUERY_STRING"]
も調べています.これらは、index.php?pagename...&letter...
を使用すると入力されますが、/books/pagename/letter
を使用すると入力されません.つまり、ここではいくつかのことが起こっているようです.適切なクエリ文字列変数を使用してindex.phpを指定すると機能するため、WordPressはパラメーターを完全に削除していません.これは、書き換えルールが正しく機能していないことを示しているようです.ただし、Rewrite Analyzerプラグインは、目的に合わせて適切に設定されていると言っているようです.
切断を修正するためにここで何を見るべきかについて少し混乱しています.明らかな何かが欠けている場合は申し訳ありません. ):