在新选项卡中打开 WooCommerce 外部产品

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)

我错过了什么?

Rei*_*gel 6

你当前正在做的事情是错误的...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)