WooCommerce / WordPress - 不显示具有特定标题的产品

时间:2014-04-02 13:31:13

标签: php wordpress loops woocommerce product

我有一个产品循环在我的主页上显示8个产品。它只是一个循环,从产品列表的末尾开始到开头,显示我的所有产品,直到它到达第8个。当我提出一个条件语句,我只想要显示某些标题的产品时,它只会选择那些,但只能从没有条件语句的情况下显示的产品列表中选择。

例如,考虑商店中所有产品的清单:

[列表的开头] 'Globus 1' 'Globus 2' [......更多产品...] 'Kompozycja 6' 'Kompozycja 7' [列表的末尾]

我的循环抓取最后一项到第一项的项目,并将显示的产品数量限制为8.我已经放置了一个条件语句,我只想显示'Kompozycja 7'并且它有效。但是,如果我指定的名称不是列表中最后8个项目之一,那么它将无效。例如,我将选择'Globus 1'。它不会显示,因为它不属于列表中的最后8个项目。

这是我的循环:

$args = array(
    'post_type' => 'product',
    'posts_per_page' => 8
    );
$loop = new WP_Query( $args );

if ( $loop->have_posts() ) {
        while ( $loop->have_posts() ) : $loop->the_post();
        if (get_the_title($post->ID) == 'Kompozycja 7' || get_the_title($post->ID) == 'Kompozycja 2') {
                woocommerce_get_template_part( 'content', 'product' );
        }   
        endwhile;
    } else {
        echo __( 'No products found' );
    }

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您的问题是您在条件循环之前限制了帖子数量。 第$loop = new WP_Query( $args );行返回最多8个结果,供循环迭代。

您可以返回整套结果并使用计数器自行限制:

$args = array(
    'post_type' => 'product',
    'posts_per_page' => -1 //return all posts
);
$loop = new WP_Query( $args );
//create a counter
$count=0;

if ( $loop->have_posts() ) {
    //loop whilst we have posts and we still require more
    while ( $loop->have_posts() && $count < 8 ) : $loop->the_post();
        if (get_the_title($post->ID) == 'Kompozycja 7' || get_the_title($post->ID) == 'Kompozycja 2') {
            woocommerce_get_template_part( 'content', 'product' );
            //increment count - if it reaches 8 we quit the loop
            $count++;
        }
    endwhile;
} else {
    echo __( 'No products found' );
}

虽然如果你有成千上万的产品,这将会很慢。您可以传递给WP_Query,以便在数据库中执行此检查。