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

问题描述 投票:2回答:2

我已经设法在我的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">';
}

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

php ajax wordpress woocommerce
2个回答
1
投票

我认为你的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">';
}

第二个其他解决方案,您可以使用简单的jQuery来完成

add_action('wp_footer',function(){
if ( has_term( 'stone', 'product_cat' ) ) {
echo '<script>

//for existing content
jQuery(".woocommerce-LoopProduct-link").attr("target","_blank");

//for content part which comes from AJAX
jQuery( document ).ajaxComplete(function() {
jQuery(".woocommerce-LoopProduct-link").attr("target","_blank");
});
</script>';
}
});

1
投票

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

// 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"也需要在相应的脚本中实现。

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

© www.soinside.com 2019 - 2024. All rights reserved.