1

次のコード チャンクは、パーマリンクを扱う 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' => '',

私は何を間違っていますか??

4

0 に答える 0