【问题标题】:Open WooCommerce External Products in New Tab在新选项卡中打开 WooCommerce 外部产品
【发布时间】:2019-02-28 19:09:44
【问题描述】:

我正在尝试自定义 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;

}

我错过了什么?

【问题讨论】:

  • 这不起作用,因为 url 是一个链接...您正在向链接添加一些文本,这就是您现在正在做的事情..

标签: wordpress woocommerce


【解决方案1】:

您当前所做的事情是错误的... 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' );
}

【讨论】:

【解决方案2】:

从function.php中删除上述函数:

通过 Template Overwrite 方法使用 Template 文件夹中的插件文件,然后

按照以下路径: woocommerce\templates\single-product\add-to-cart\external.php

打开有标签的external.php,应用target="_blank"。

它会起作用的。

【讨论】:

  • 我的意思是你可以通过使用模板覆盖和应用代码来使用你的主题目录中的插件文件而不干扰插件文件。
  • 你可以在上面改写你的答案。
【解决方案3】:

以下是将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 );

ns_ 部分替换为您自己的命名空间缩写。

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 2019-02-18
    • 2021-01-17
    • 1970-01-01
    • 2017-04-23
    • 2018-02-26
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多