我正在尝试添加编辑链接到我的woocommerce页面以及存档页面上的所有产品。
对于页面本身,我尝试了这个:
add_filter( 'woocommerce_before_shop_loop', 'woo_page_edit_link', 10 );
function woo_page_edit_link() {
edit_post_link( 'e', '', '' );
}
但不是页面ID,我总是得到列出的第一个产品的ID。
对于循环,我尝试了这个:
add_filter('woocommerce_before_shop_loop_item' , 'woo_item_edit_link');
function woo_item_edit_link() {
edit_post_link( 'e', '', '' );
}
但是编辑链接总是在商店商品链接中嵌套。
任何想法如何解决这两个问题?
答案 0 :(得分:1)
woocommerce_before_shop_loop
在循环标记之前,但已经设置了产品查询,因此当前$post
用于第一个产品。您可以使用edit_post_link()
的第4个参数来定义特定的页面ID。 WooCommerce有一个内置函数,用于获取其自定义页面的页面ID。
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' ) );
}
您的项目编辑链接会显示在链接中,因为woocommerce_template_loop_product_link_open()
已挂钩到woocommerce_before_shop_loop_item
,优先级为10.因此,如果您在相同(或更高)优先级上添加您的功能,则可能会在链接里面。要解决此问题,您可以使用下面的早期优先级。
add_filter('woocommerce_before_shop_loop_item' , 'woo_item_edit_link', 5);
function woo_item_edit_link() {
edit_post_link( 'edit product' );
}