在新标签页中打开WooCommerce外部产品

时间:2016-02-06 04:55:47

标签: 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;

}

我错过了什么?

3 个答案:

答案 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 ); 部分。