次のコード チャンクは、パーマリンクを扱う WP コーダーにはよく知られています。
add_filter('rewrite_rules_array', array($this, 'insert_rewrite_rules'));
function insert_rewrite_rules($rules)
{
// $link_cloaking_text is properly set
$newrules = array();
$newrules['([^\/]*)/\b'.$link_cloaking_text.'\b/(\d*)$'] =
'index.php?pagename=$matches[1]&link_cloaking_id=$matches[2]';
return $newrules + $rules;
}
pagename
問題:と の値を取得できませんlink_cloaking_id
(query_vars
フックと$wp_rewrite->flush_rules()
が正しく使用されている)
$newrules['([^\/]*)/\b'.$link_cloaking_text.'\b/(\d*)$'] =
'index.php?pagename=$matches[1]&link_cloaking_id=$matches[2]';
debug:
WP_Query::__set_state(array(
'query_vars' =>
array (
'error' => '404',
'm' => 0,
'p' => 0,
'post_parent' => '',
'subpost' => '',
'subpost_id' => '',
'attachment' => '',
'attachment_id' => 0,
'name' => '',
'static' => '',
'pagename' => '', // empty
'page_id' => 0,
しかし$matches[1]
、定数に置き換えると、次のようmy_pagename
に機能します。
$newrules['([^\/]*)/\b'.$link_cloaking_text.'\b/(\d*)$'] =
'index.php?pagename=my_pagename&link_cloaking_id=$matches[2]';
debug:
WP_Query::__set_state(array(
'query_vars' =>
array (
'pagename' => 'my_pagename', // correct
'link_cloaking_id' => '8', // correct
'error' => '',
'm' => 0,
'p' => 0,
'post_parent' => '',
私は何を間違っていますか??