Hom*_*mer 2 wordpress woocommerce
我正在尝试自定义 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;
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
你当前正在做的事情是错误的...get_product_url被命名为它的作用。它会给你url...不是有url的html锚点,而只是url..所以你只是在url中添加一些文本..这就是你正在做的...
@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' );
}
Run Code Online (Sandbox Code Playgroud)