将WooCommerce后台订单项产品链接改为前端产品永久链接
修复WooCommerce订单详情产品链接指向前台产品页的问题
你遇到的问题是:WooCommerce订单详情内的产品链接默认指向后台产品编辑页,而非前台网店的产品页。尝试用$product_link = $product ? get_permalink( $product->get_id() ) : '';修复但没效果,还导致订单详情里产品标题重复。
下面是正确的解决方案,替换你之前的代码即可:
add_action( 'woocommerce_before_order_itemmeta', 'custom_order_item_product_link', 10, 3 ); function custom_order_item_product_link( $item_id, $item, $product ) { // 移除默认的产品标题输出,避免重复 remove_action( 'woocommerce_order_item_name', 'woocommerce_order_item_name', 10 ); if ( ! is_a( $product, 'WC_Product' ) ) { return; } // 获取前台产品链接(仅产品在前台可见时生效) $product_link = $product->is_visible() ? $product->get_permalink() : ''; if ( $product_link ) { printf( '<a href="%s">%s</a>', esc_url( $product_link ), esc_html( $product->get_name() ) ); } else { echo esc_html( $product->get_name() ); } }
关键说明
- 标题重复的原因是默认产品标题的输出逻辑没被关闭,添加
remove_action即可取消默认输出,解决重复问题。 - 用
$product->get_permalink()直接调用WooCommerce内置方法获取前台链接,比手动通过ID调用get_permalink更规范,同时$product->is_visible()能过滤掉前台不可见的产品,避免生成无效链接。 - 代码保留了安全处理:
esc_url()转义链接、esc_html()转义产品名称,防止XSS风险。
内容的提问来源于stack exchange,提问作者user22774038
相关产品推荐
相关产品推荐

