2016-12-31 7 views
0

私はwoocommerceページに加えて、アーカイブページのすべての製品に編集リンクを追加しようとしています。 woocommerceページに編集リンクを追加するには?

add_filter('woocommerce_before_shop_loop', 'woo_page_edit_link', 10); 

function woo_page_edit_link() { 
    edit_post_link('e', '', ''); 
} 

しかし、その代わりにページIDを、私はいつも最初の製品のIDが記載されている取得:

は、ページ自体のために、私はこれを試してみました。 Forループ

、私はこの試みた:

add_filter('woocommerce_before_shop_loop_item' , 'woo_item_edit_link'); 

function woo_item_edit_link() { 
    edit_post_link('e', '', ''); 
} 

をしかし、編集リンクは常に内のショップアイテムのリンクにネストされます。

どのように両方の問題を解決するためのアイデアですか?

答えて

1

woocommerce_before_shop_loopはループマークアップの前ですが、製品クエリはすでに設定されているため、現在の$postが最初の製品用です。 edit_post_link()の4番目のパラメータを使用して、特定のページIDを定義することができます。 WooCommerceにはカスタムページのページIDを取得するための組み込み関数があります。 woocommerce_template_loop_product_link_open()はあなたが同じ(またはそれ以降)優先順位のあなたの機能を追加した場合、あなたはリンクの内側にあることのリスクだから、10の優先度でwoocommerce_before_shop_loop_itemにフックされているため

add_filter('woocommerce_before_shop_loop', 'woo_page_edit_link', 10); 

function woo_page_edit_link() { 
    edit_post_link('edit shop', '', '', wc_get_page_id('shop')); 
} 

そして、あなたのアイテムの編集リンクは、リンクの内側に表示されます。これに対処するには、以下のようなより早い優先度を使用できます。

add_filter('woocommerce_before_shop_loop_item' , 'woo_item_edit_link', 5); 

function woo_item_edit_link() { 
    edit_post_link('edit product'); 
} 
関連する問題