开发者问题收集

WooCommerce 商店页面端点。无产品

2017-04-13
348

我一直尝试使用此代码为商店页面添加一个端点:

add_action( 'init', 'add_city_endpoint' );
function add_city_endpoint() {
    add_rewrite_endpoint( 'city', EP_PAGES );
}

以便在 URL 为如下内容时过滤产品: /shop/city/new-york/

但我得到的页面没有产品。

我怎样才能让它工作?

1个回答

好吧,我会回答我自己的问题。

由于商店页面不是实际的 wordpress 页面,而是“产品”帖子类型的存档页面,因此端点不适合我的目的。正确的方法是改用 add_rewrite_rule:

add_action( 'init', 'city_add_rewrite_rules' );
function city_add_rewrite_rules() {

    $shop_page = ( $shop_page_id = wc_get_page_id( 'shop' ) ) && get_post( $shop_page_id ) ? get_page_uri( $shop_page_id ) : 'shop';

    add_rewrite_tag( '%sr_city%', '([^&]+)' );
    add_rewrite_rule(
            "^$shop_page/city/([^/]+)/?$", 'index.php?post_type=product&sr_city=$matches[1]', 'top'
    );
    //pagination
    add_rewrite_rule(
            "^$shop_page/city/([^/]+)/page/([0-9]+)?$", 'index.php?post_type=product&sr_city=$matches[1]&paged=$matches[2]', 'top'
    );

}
c00x
2017-04-18