2017-04-13 13 views
1

私はこのコードを使用してお店のページにエンドポイントを追加しようとしてきた:/ショップ/街/新・ニューヨーク/WooCommerceショップページエンドポイント。商品なし

:URLのようなものがあるときにフィルターの製品を得るために

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

しかし、製品のないページがあります。

どうすればいいですか?

+0

このページを見ましたか?行動としてそれを行う必要がありますか?どのバージョンのWCを使用していますか? – Difster

+0

@Difster、私が "site.com/shop/city/new-york/"に行くと、私は通常のショップページ(404ではない)が空のコンテンツを取得します。私は各都市ごとにきれいなURLを持っていたいと思いますし、終点がこれを達成する最も簡単な方法だと思いました。 WCバージョンは2.6.14です。ありがとう。 – c00x

答えて

0

申し訳ありませんが、私は自分の質問に答えます。

ショップページは実際のワードプレスページではなく、「製品」ポストタイプのアーカイブページであるため、私の目的のためにエンドポイントがうまく機能しません。適切な方法は、代わりに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' 
    ); 

} 
関連する問題