求WordPress/WooCommerce代码:新标签打开购物车页(nofollow)
实现WooCommerce按钮新标签页打开购物车(带nofollow)
下面的代码可以实现迷你购物车按钮和产品添加完成后通知里的按钮,在新标签页打开购物车页面,并添加nofollow属性:
PHP代码(处理后端生成的链接)
将以下代码添加到当前主题的functions.php文件,或使用代码片段插件(如Code Snippets)来添加:
// 为购物车链接添加nofollow和新标签页属性 function add_nofollow_blank_to_cart_links($link, $cart_url = '') { if (strpos($link, wc_get_cart_url()) !== false) { $link = str_replace('<a ', '<a target="_blank" rel="nofollow" ', $link); } return $link; } add_filter('woocommerce_cart_link', 'add_nofollow_blank_to_cart_links', 10, 2); add_filter('woocommerce_add_to_cart_message', 'add_nofollow_blank_to_cart_links', 10, 2); // 修改迷你购物车的查看购物车按钮属性 function modify_minicart_view_cart_button($button) { return str_replace('<a ', '<a target="_blank" rel="nofollow" ', $button); } add_filter('woocommerce_widget_cart_view_cart_button', 'modify_minicart_view_cart_button');
JavaScript代码(处理动态生成的按钮)
如果按钮是AJAX动态生成的(比如AJAX添加产品后的通知按钮),需要额外添加JS代码来处理:
document.addEventListener('DOMContentLoaded', function() { // 初始化处理已加载的按钮 const updateCartButtons = () => { // 迷你购物车按钮 document.querySelectorAll('.widget_shopping_cart .button.wc-forward').forEach(btn => { btn.setAttribute('target', '_blank'); btn.setAttribute('rel', 'nofollow'); }); // 产品添加成功通知按钮 document.querySelectorAll('.woocommerce-message .button.wc-forward').forEach(btn => { btn.setAttribute('target', '_blank'); btn.setAttribute('rel', 'nofollow'); }); }; updateCartButtons(); // 监听动态内容加载(处理AJAX生成的按钮) document.body.addEventListener('click', function(e) { const targetBtn = e.target.closest('.button.wc-forward'); if (targetBtn && targetBtn.href.includes(wc_cart_params.cart_url)) { targetBtn.setAttribute('target', '_blank'); targetBtn.setAttribute('rel', 'nofollow'); } }); });
使用说明
- PHP代码:优先用代码片段插件添加,避免主题更新时丢失代码;若直接编辑
functions.php,注意备份文件。 - JavaScript代码:可以添加到WordPress后台「外观」→「自定义」→「额外JS」区域,或通过主题的
wp_enqueue_script函数注册加载。
内容的提问来源于stack exchange,提问作者Ivan Vasilev
相关产品推荐
相关产品推荐

