【问题标题】:Open Product of Certain Category in a new tab在新选项卡中打开特定类别的产品
【发布时间】:2017-12-13 19:53:52
【问题描述】:

我希望选择产品类别在新选项卡中打开单个产品。其他产品类别将在同一选项卡中正常打开。

这是我拥有的适用于全球所有产品的代码...

remove_action( 'woocommerce_before_shop_loop_item','woocommerce_template_loop_product_link_open', 10 );

add_action ( 'woocommerce_before_shop_loop_item', 'ami_function_open_new_tab', 10 );

function ami_function_open_new_tab() {
    echo '<a target="_blank" href="' . get_the_permalink() . '" class="woocommerce-LoopProduct-link">';
}

这段代码运行良好,但我想让它成为特定于产品类别的代码,所以这就是我想出的......

remove_action ( 'woocommerce_before_shop_loop_item','woocommerce_template_loop_product_link_open', 10 );
add_action ( 'woocommerce_before_shop_loop_item', 'ami_function_open_new_tab', 10 );

function ami_function_open_new_tab() {

if ( has_term( 'stone', 'product_cat' ) ) {
    echo '<a target="_blank" href="' . get_the_permalink() . '" class="woocommerce-LoopProduct-link">';

 }else if( !has_term( 'stone', 'product_cat' ) ) {
    remove_action ( 'woocommerce_before_shop_loop_item', 'ami_function_open_new_tab', 10 );
    add_action ( 'woocommerce_before_shop_loop_item','woocommerce_template_loop_product_link_open', 10 );
 }
}

除 1 个问题外按预期工作

问题:不属于特定类别的产品页面上列出的第一个产品不会在新标签或现有标签中打开(根本不会打开)。第二,第三,等等都按预期打开。

我在这里错过了什么?

【问题讨论】:

    标签: php wordpress woocommerce categories


    【解决方案1】:

    我怀疑您的 remove_action 无法采取行动,并且连续有 2 个链接。这就是为什么第一个给麻烦。其余的可以由现代浏览器呈现。 所以试试这个代码:

    add_action('init',function(){ remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 ); } ,0);
    function ami_function_open_new_tab() {
    //....
    }
    

    或者,您可以使用简单的 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>';
    }
    });
    

    【讨论】:

    • 太棒了,这就像一个魅力!我使用了第二个 jQuery 代码。感谢您的专业知识!
    • 对此有一个警告。我正在为产品使用 AJAX 加载更多插件而不是分页,初始加载的产品在新选项卡中正确打开,但之后加载的任何内容都在同一窗口中打开。有没有简单的解决方法?
    • 我已经编辑了我的答案。检查,如果不成功,请告诉我您的网址
    • 就是这样。你摇滚!!
    猜你喜欢
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 2018-02-26
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多