WooCommerce:如何仅在特定作者的产品归档页显示自定义信息
解决WooCommerce特定作者商品归档页加购按钮前显示自定义内容的问题
我来帮你搞定这个问题!你之前的代码没生效,核心原因是在产品归档的循环里,get_queried_object_id()返回的是当前归档页面(比如商店页、分类页)的ID,不是单个商品的ID,所以没法正确获取对应商品的作者信息。咱们换个思路,直接利用函数里的$product参数来获取当前商品的作者即可。
下面是修正后的完整代码,你可以根据需求选择用作者昵称或者作者ID来判断:
add_filter( 'woocommerce_loop_add_to_cart_link', 'tomich_add_melody_vendor', 10, 3 ); function tomich_add_melody_vendor ( $add_to_cart_html, $product, $args ) { // 获取当前商品的作者ID $product_author_id = get_post_field('post_author', $product->get_id()); // 方式1:通过作者昵称判断(比如你要匹配的是昵称'vivian') $target_author_name = 'vivian'; if (get_the_author_meta('display_name', $product_author_id) === $target_author_name) { $before = 'Shop: <img class="vendor-image-tomich" src="https://melodypayne.com/wp-content/uploads/2019/06/cropped-Melody-Payne-Store-Logo-Pic-2019.png" alt="Melody Logo"><span class="tomich-shop-title"><a href="/shop/melodypayne">Melody Payne</a></span></br></br>'; return $before . $add_to_cart_html; } // 方式2:通过作者ID判断(更稳定,不会因为昵称修改失效,比如作者ID是123) // $target_author_id = 123; // if ($product_author_id === $target_author_id) { // $before = 'Shop: <img class="vendor-image-tomich" src="https://melodypayne.com/wp-content/uploads/2019/06/cropped-Melody-Payne-Store-Logo-Pic-2019.png" alt="Melody Logo"><span class="tomich-shop-title"><a href="/shop/melodypayne">Melody Payne</a></span></br></br>'; // return $before . $add_to_cart_html; // } // 如果不是目标作者的商品,直接返回原加购按钮HTML return $add_to_cart_html; }
关键说明:
- 用
$product->get_id()获取当前循环中单个商品的ID,再通过get_post_field('post_author', ...)拿到该商品的作者ID,这才是循环中正确的获取方式。 - 优先推荐用作者ID判断,因为昵称可能被修改,ID是永久不变的,逻辑更稳定。
- 如果你需要同时匹配多个作者,可以把判断条件改成数组包含的形式,比如:
$target_author_ids = [123, 456]; // 多个目标作者ID if (in_array($product_author_id, $target_author_ids)) { // 执行自定义内容逻辑 }
内容的提问来源于stack exchange,提问作者Shelley
相关产品推荐
相关产品推荐

