如何使用WP_Query获取当前语言的woocommerce产品?

时间:2016-11-15 10:09:00

标签: php wordpress woocommerce product multilingual

我更改了商店页面分页并添加了自定义代码,以便在页面滚动时使用ajax加载产品。我的网站是多语言的,我使用的是WPML。该代码在默认语言中工作正常,但在其他语言中,而不是显示该语言的产品,它向我显示默认语言的产品,即英语。意味着我希望显示已翻译的产品与特定语言相对应。

这是我的代码ajax代码:

var $ = jQuery;
var flag=1;
var limit=0;
$(window).scroll(function(){
         if($(window).scrollTop() == $(document).height() - $(window).height()){
            limit++;
            if(flag==1)
            {
                $(".lazy_lode_img").css('display','block');//display loading image
                $.ajax({
                    url:"<?php echo get_stylesheet_directory_uri();?>/ajax.php", // ajax page
                    type:'POST',
                    data:{ 'paged':limit}, // send page no
                    dataType:"html",
                    success: function(product_data){
                        //alert(product_data);
                        if(product_data!=0)
                        {
                            $( ".shop-products.row.grid-view" ).append(product_data);
                            $(".lazy_lode_img").css('display','none');
                        }
                        else
                        {
                            flag=0;
                           // $('#k_test').append('<div class="news" id="no_news" style="text-align:center;">NO MORE PRODUCT</div>');
                            $(".lazy_lode_img").remove();
                        }
                    }
                });
            }
        }
    });

这是我的PHP代码:

$page_no = $_POST['paged'];
$post_per_page=6;
$args = array(
    'posts_per_page'   => $post_per_page,//set post per page
    'paged'           => $page_no,//set offset for limit
    'post_type' => 'product',
    'post_status'=>'publish',
);

$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) : $query->the_post();
        /*$price = get_post_meta( $query->post->ID, '_regular_price', true );
        $price=round($price,2);
        if ((int) $price == $price)
        {
            $price=$price.'.00';
        }*/
        ?>
        <div class="item-col col-xs-6 col-md-4 col-sm-4 post-6303 product type-product status-publish has-post-thumbnail product_cat-all-products product_cat-tarts instock shipping-taxable purchasable product-type-simple">
            <div class="product-wrapper product-wrapper2">
                <div class="list-col4">
                    <div class="product-image">
                        <a class="twoimg" href="<?php echo get_permalink( $query->post->ID );?>" title="Blueberry Frangipane Tart">
                            <?php echo get_the_post_thumbnail( $query->post->ID, 'shop_catalog' );?>
                        </a>
                    </div>
                    <div class="home-product-title">
                        <h2 class="product-name">
                            <a href="<?php echo get_permalink( $query->post->ID );?>" style="color:black;"><?php echo $query->post->post_title;?></a>
                        </h2>
                        <span class="arrow-img"></span>
                    </div>
                </div>
                <div class="clearfix"></div>
            </div>
        </div>
        <?php
    endwhile;
}
else
{
    echo '0';
}

我不明白我应该在哪里传递语言代码,以便在前端获取当前所选语言的产品。

1 个答案:

答案 0 :(得分:1)

花了很长时间后我终于找到了解决方案。

我刚刚添加了一个参数

'lang' => $current_language

现在我的查询参数如下:

 $args = array(
    'posts_per_page'   => $post_per_page,//set post per page
    'paged'           => $page_no,//set offset for limit
    'post_type' => 'product',
    'post_status'=>'publish',
    'lang' => $current_language
);

它就像魅力一样。