web-dev-qa-db-ja.com

1つのURLに複数のエンドポイント

私は1つのURLに複数のエンドポイントを追加しようとしています:

http:// localhost:1000 /管理リード/ lead_id/1000/product_id/123455

しかしこの方法では、クエリvar lead_id1000/product/123455と等しくなり、1000とは等しくなりません。

次のようにして、すべてが正しく行われます。

http:// localhost:1000 /管理リード/ lead_id/1000 /?product_id = 123455

だから私は私がいくつかの書き換えルールを追加する必要があると思うので、Wordpressはlead_idとproduct_idが2つのクエリ変数であることを理解します。

エンドポイントの追加方法:

function add_lead_management_endpoints() {

    add_rewrite_endpoint( 'lead_id', EP_PAGES );
    add_rewrite_endpoint( 'product_id', EP_PAGES );

}
add_action( 'init', 'add_lead_management_endpoints' );
3
Robbert

この文脈についてはよくわからない、それはカスタム投稿タイプなのか、それとも単なるページなのか。

これはあなたが探しているものかもしれません -

function add_lead_management_endpoints() {
    add_rewrite_rule(
        'manage-lead/lead_id/([0-9]{1,})/product_id/([0-9]{1,})',
        'index.php?pagename=manage-lead&lead_id=$matches[1]&product_id=$matches[2]',
        'top'
    );

    add_rewrite_tag( '%lead_id%', '([^&]+)' );
    add_rewrite_tag( '%product_id%', '([^&]+)' );
}
add_action( 'init', 'add_lead_management_endpoints' );

これを有効にするには、パーマリンクをフラッシュする必要があります(設定 - >パーマリンクにアクセスしてください)。

2
Elliott