0

add_rewrite_rule() 関数を使用して Wordpress に適切な値を変数に割り当てるのに問題があります。私の目標は、次のような URL を持つことですwww.mywebsite.com/catalog/category1/category2/item-slug

functions.php ファイルからの私のコードは次のとおりです。

add_filter( 'query_vars', 'query_vars_new' );
function query_vars_new($query_vars){
    $query_vars[]='category1';
    $query_vars[]='category2';
    $query_vars[]='catalog_item';
    return $query_vars;
}

add_action( 'init', 'rewrite_init' );
function rewrite_init(){
    add_rewrite_rule('catalog(/([^/]+))?(/([^/]+))?/?','index.php?page_id=94&category1=$matches[1]&category2=$matches[2]&catalog_item=$matches[3]','top');
}

したがって、目標は、3 つの変数$category1$category2、および$catalog_item対応する URL セグメントの値を持つことです。ただし、これをテストすると、最初の 2 つの変数が同じ値に設定されます。

たとえば、次www.mywebsite.com/catalog/clothes/shirts/polo-shirt を返す必要があります。

$category1="clothes";
$category2="shirts";
$catalog_item="polo-shirt";

しかし、代わりに私は得る:

$category1="/clothes";
$category2="clothes";
$catalog_item="/polo-shirt";

add_rewrite_rule 関数に問題があるはずですが、わかりません。

4

1 に答える 1

0

この質問に対する信じられないほど圧倒的な回答のおかげで、Wordpress 変数の助けを借りずに機能させることができました。URL で変数を許可するように Wordpress を構成し、PHP を使用して URL を取得し、さまざまな URL セグメントを取得して分析しました。Wordpress の方法ほどきれいではありませんが、少なくとも機能します。

于 2012-11-12T14:43:19.250 に答える