私の WordPress サイトには、 にあるポートフォリオがありwww.mysite.com/portfolio/
ます。ポートフォリオのセクションとアイテムは、私が作成したカスタム プラグインを通じて管理されます。のような個々のアイテムにアクセスし、www.mysite.com/portfolio/my-cool-photo
「my-cool-photo」をクエリ文字列に入れて?portfolio_item=my-cool-photo
、コードから読み取ることができるようにしたいと考えています。
プラグイン アクティベーション PHP ファイルには、次のコードがあります。
function add_rewrite_rules($wp_rewrite) {
$new_rules = array(
'portfolio/(.+)/?$' => 'index.php?&portfolio_item=$1'
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'add_rewrite_rules');
function query_vars($public_query_vars) {
$public_query_vars[] = "portfolio_item";
return $public_query_vars;
}
add_filter('query_vars', 'query_vars');
これで書き換えルールが配列に追加されてOK。問題は、それが何もしていないことです。行ってみるとwww.mysite.com/portfolio/testing/
「ちょっと恥ずかしいでしょ?」って。WordPress 404 エラーページ。明らかにリダイレクトが機能していないため、クエリ文字列は入力されませんが、これを行ったことを確認するためだけに:
global $wp_query, $wp_rewrite;
if ($wp_rewrite->using_permalinks()) {
$searchKey = $wp_query->query_vars['portfolio_item'];
} else {
$searchKey = $_GET['portfolio_item'];
}
...そして、クエリ文字列が渡されていないことを確認してください。
足りないものはありますか?