我正在尝试自定义WooCommerce外部产品链接以在新标签页中打开...
这是我的尝试:
为WordPress主题 functions.php 文件添加了一个过滤器,如下所示:
add_filter( 'woocommerce_product_add_to_cart_url', 'woocommerce_externalProducts_openInNewTab' );
function woocommerce_externalProducts_openInNewTab($product_url) {
global $product;
if ( $product->is_type('external') ) {
$product_url = $product->get_product_url() . '"target="_blank""';
}
return $product_url;
}
我错过了什么?
答案 0 :(得分:3)
您目前正在做的事情是错误的...... get_product_url
被命名为它所做的事情。它将为您提供网址...而不是具有网址的html锚点,而只是网址..所以您只是在网址中添加了一些文字..这就是您正在做的事情..
@Ash Patel给出了一个解决方案。您可以使用模板更改标记...只需导航到您的插件文件夹并查找此文件.. woocommerce\templates\single-product\add-to-cart\external.php
。你可以在里面找到说明。
现在,有时候,我们不喜欢编辑模板......特别是如果它只是这样的小编辑......
下面的代码将以您希望的方式执行...只需将此代码粘贴到您的主题functions.php
中。
remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
add_action( 'woocommerce_external_add_to_cart', 'rei_external_add_to_cart', 30 );
function rei_external_add_to_cart(){
global $product;
if ( ! $product->add_to_cart_url() ) {
return;
}
$product_url = $product->add_to_cart_url();
$button_text = $product->single_add_to_cart_text();
do_action( 'woocommerce_before_add_to_cart_button' ); ?>
<p class="cart">
<a href="<?php echo esc_url( $product_url ); ?>" target="_blank" rel="nofollow" class="single_add_to_cart_button button alt"><?php echo esc_html( $button_text ); ?></a>
</p>
<?php do_action( 'woocommerce_after_add_to_cart_button' );
}
答案 1 :(得分:2)
从function.php中删除以上功能:
通过模板覆盖方法使用Template文件夹中的插件文件,然后
按照以下路径: woocommerce \模板\单品\添加到购物车\ external.php
打开external.php,其中有标记,应用target =&#34; _blank&#34;。
它会起作用。
答案 2 :(得分:0)
以下是将cmd.exe
添加到存档页面上的链接的方法:
target="_blank"
用您自己的名称空间缩写替换function ns_open_in_new_tab($args, $product)
{
if( $product->is_type('external') ) {
// Inject target="_blank" into the attributes array
$args['attributes']['target'] = '_blank';
}
return $args;
}
add_filter( 'woocommerce_loop_add_to_cart_args', 'ns_open_in_new_tab', 10, 2 );
部分。