网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

Wordpress,foreach on taxonomy显示重复

GG网络技术分享 2025-03-18 16:12 6


问题描述:

I have the below code, it works initially with regards to the fact that it displays the products for all taxonomies. However if a product is set to 2 taxonomies then it will display twice on the page as opposed to showing the first instance of the product.

<?php if ( $terms && !is_wp_error( $terms ) ) {

foreach ( $terms as $term ) {

$args = array(

\'post_type\' => \'products\',

\'posts_per_page\' => -1,

\'orderby\' => \'menu_order\',

\'tax_query\' => array(

array(

\'taxonomy\' => \'product_cat\',

\'field\' => \'slug\',

\'terms\' => $term->slug,

),

),

\'order\' => \'asc\',

);

runQuery($args);

}

} ?>

Here is the runQuery function:

<?php $x = 0;

function runQuery($args) {

global $x;

$query = new WP_Query( $args );

if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();

$cat_terms = get_the_terms($post->id, \'product_cat\');

$datagroups = \'\';

foreach ($cat_terms as $key => $cat) {

if (count($cat_terms) == ($key + 1)) {

$datagroups .= \'\"\' . $cat->name . \'\"\';

} else {

$datagroups .= \'\"\' . $cat->name . \'\", \';

}

}

?>

HTML Here that is displayed;

<?php $x ++;

endwhile;

endif;

wp_reset_postdata();

}?>

网友观点:

I have figured this out, I essentially just had to check the current post in the loop to see if it had already been displayed:

<?php $x = 0;

$displayed = [];

function runQuery($args) {

global $displayed;

global $x;

$query = new WP_Query( $args );

if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();

$cat_terms = get_the_terms($post->id, \'product_cat\');

$datagroups = \'\';

if ( in_array( get_the_ID(), $displayed ) ){

continue;

}

// update array with currently displayed post ID

$displayed[] = get_the_ID();

foreach ($cat_terms as $key => $cat) {

if (count($cat_terms) == ($key + 1)) {

$datagroups .= \'\\\"\' . $cat->name . \'\\\"\';

} else {

$datagroups .= \'\\\"\' . $cat->name . \'\\\", \';

}

}

?>

Source that may help others: https://wordpress.stackexchange.com/questions/285091/avoid-duplicate-post-from-same-taxonomy

标签:

提交需求或反馈

Demand feedback