Woocommerce在使用ajax“无限滚动”之后在新选项卡中打开产品链接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Woocommerce在使用ajax“无限滚动”之后在新选项卡中打开产品链接相关的知识,希望对你有一定的参考价值。

我已经设法在我的Woocommerce网站上打开所有产品链接以在新标签中打开,但是,我使用无限滚动和ajax来加载更多产品,并且通过无限滚动加载的产品在单击时不会在新选项卡中打开在他们。

这是我目前在新标签中打开产品的代码;

remove_action( 'woocommerce_before_shop_loop_item','woocommerce_template_loop_product_link_open', 10 );
add_action ( 'woocommerce_before_shop_loop_item', 'chr_function_open_new_tab', 10 );
function chr_function_open_new_tab() {
echo '<a target="_blank" href="' . get_the_permalink() . '" class="woocommerce-LoopProduct-link">';
}

任何帮助都非常感谢。提前致谢!

答案

我认为你的remove_action无法采取行动。这就是它给它带来麻烦的原因。所以尝试这个代码:

add_action('init',function(){ remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 ); } ,0);
function chr_function_open_new_tab() {
    echo '<a target="_blank" href="' . get_the_permalink() . '" class="woocommerce-LoopProduct-link">';
}
另一答案

而是尝试使用此专用过滤器钩子添加到购物车按钮:

// Change loop add to cart ajax button to a linked button to single product pages
add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_loop_add_to_cart', 20, 2 );
function replace_loop_add_to_cart( $html, $product ) {
    $link = $product->get_permalink();
    $text = __("Read More", "woocommerce");
    return '<a href="' . $link . '" target="_blank" class="button alt add_to_cart_button">' . $text . '</a>';
}

这里是产品链接:

add_filter( 'woocommerce_before_shop_loop_item', 'replace_template_loop_product_link_open', 1 );
function replace_loop_product_link() {
    remove_action( 'woocommerce_before_shop_loop_item','woocommerce_template_loop_product_link_open', 10 );
    add_action ( 'woocommerce_before_shop_loop_item', 'new_loop_product_link_open', 10 );
}

function new_loop_product_link_open() {
    global $product;

    echo '<a href="' . esc_url( $product->get_permalink() ) . '" target="_blank" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
}

代码位于活动子主题(或活动主题)的function.php文件中。经过测试和工作。

但在您的情况下,它可能无法按预期工作,具体取决于您的自定义ajax功能的实现方式。由于通过ajax加载的产品仍然存在问题,因此target="_blank"也需要在相应的脚本中实现。

在这一点上,没有人可以帮助你,因为我们无法猜测这个功能是如何构建的。

以上是关于Woocommerce在使用ajax“无限滚动”之后在新选项卡中打开产品链接的主要内容,如果未能解决你的问题,请参考以下文章

为啥通过 AJAX 无限滚动加载的内容的高度在加载后没有正确测量?

IsInViewport 不适用于 Ajax 无限滚动

如何在没有 ajax 的 select2 4.0 中启用无限滚动

Laravel使用无限滚动分页

防止重复无限滚动ajax加载器

在无限滚动Wordpress帖子中包含脚本