关于按 ID 排序的自定义 post 类型短代码的问题
Issue on custom post type shortcode ordering by ids
出于特殊目的,我必须创建一个自定义 post 类型,并通过在我的简码上指示每个自定义 post 的 ID 来像轮播一样显示它。
问题是当我使用它时,自定义短代码的最后一个 ID 没有显示在正确的位置,有时在前面,有时在最后但从来没有在正确的位置(例如我设置 3527 ID在第4位,它在最后一个位置显示这个产品。
我试图显示 id 的数组,似乎没有任何问题(数组修改等)id 在数组上的正确位置
这是代码:
//Carousel Shortcode Produits By ID
function carousel_products_ids_shortcode( $atts ) {
$c=extract(shortcode_atts( array(
'ids'=>''
), $atts ));
$args = array(
'post_type' => 'pp_produit',
'posts_per_page' => -1,
'publish_status' => 'published',
'order'=>'ASC'
);
if(!is_null($ids) && $ids!=""){
$args['post__in']=explode(",",$ids);
print_r($args['post__in']);
}
ob_start();
$query = new WP_Query($args);
if ( $query->have_posts() ) { ?>
<div class="carousel-custom-products">
<div class="owl-carousel owl-custom-products">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<div class="single-produit">
<div id="produit-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if(has_post_thumbnail()) { ?>
<div class="img-container">
<a class="thumb-produit" href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a>
</div>
<?php }else{ ?>
<div class="img-container">
<a href="<?php the_permalink(); ?>" class="thumb-produit">
<img src="<?php echo get_stylesheet_directory_uri()."/img/defaultpp.jpg" ?> ">
</a>
</div>
<?php } ?>
<div class="produit-single-content">
<h3><a href="<?php the_permalink(); ?>" style="color:<?php the_field('couleur_du_titre_du_produit'); ?>" class="viga"><?php echo (strlen(get_the_title())>30)? substr(get_the_title(),0,30)."..." : substr(get_the_title(),0,30); ?></a></h3>
<?php the_excerpt(); ?>
</div>
</div>
</div>
<?php endwhile; ?>
</div>
</div>
<?php $myvariable = ob_get_clean();
return $myvariable;
}
}
add_shortcode( 'carouselproductsids', 'carousel_products_ids_shortcode' );
这是简码:
[carouselproductsids ids="3477,3479,3481,3527,3487,3483,3485,3489,3491,3496,3493"]
比如ID 3257在生成轮播图的最后一个位置!
wp_query 将根据您传递的“顺序”arg 从数据库中获取 posts 所以 它会检查是否post id 是否在数组中,但它不会保留数组的顺序
如果你想以特定顺序显示posts你可以将一些自定义字段(如元键或某些东西)传递给post s 以特定顺序获取它们 或者您可以运行 在post_id 数组上循环调用wp_query 每个id
出于特殊目的,我必须创建一个自定义 post 类型,并通过在我的简码上指示每个自定义 post 的 ID 来像轮播一样显示它。
问题是当我使用它时,自定义短代码的最后一个 ID 没有显示在正确的位置,有时在前面,有时在最后但从来没有在正确的位置(例如我设置 3527 ID在第4位,它在最后一个位置显示这个产品。
我试图显示 id 的数组,似乎没有任何问题(数组修改等)id 在数组上的正确位置
这是代码:
//Carousel Shortcode Produits By ID
function carousel_products_ids_shortcode( $atts ) {
$c=extract(shortcode_atts( array(
'ids'=>''
), $atts ));
$args = array(
'post_type' => 'pp_produit',
'posts_per_page' => -1,
'publish_status' => 'published',
'order'=>'ASC'
);
if(!is_null($ids) && $ids!=""){
$args['post__in']=explode(",",$ids);
print_r($args['post__in']);
}
ob_start();
$query = new WP_Query($args);
if ( $query->have_posts() ) { ?>
<div class="carousel-custom-products">
<div class="owl-carousel owl-custom-products">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<div class="single-produit">
<div id="produit-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if(has_post_thumbnail()) { ?>
<div class="img-container">
<a class="thumb-produit" href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a>
</div>
<?php }else{ ?>
<div class="img-container">
<a href="<?php the_permalink(); ?>" class="thumb-produit">
<img src="<?php echo get_stylesheet_directory_uri()."/img/defaultpp.jpg" ?> ">
</a>
</div>
<?php } ?>
<div class="produit-single-content">
<h3><a href="<?php the_permalink(); ?>" style="color:<?php the_field('couleur_du_titre_du_produit'); ?>" class="viga"><?php echo (strlen(get_the_title())>30)? substr(get_the_title(),0,30)."..." : substr(get_the_title(),0,30); ?></a></h3>
<?php the_excerpt(); ?>
</div>
</div>
</div>
<?php endwhile; ?>
</div>
</div>
<?php $myvariable = ob_get_clean();
return $myvariable;
}
}
add_shortcode( 'carouselproductsids', 'carousel_products_ids_shortcode' );
这是简码:
[carouselproductsids ids="3477,3479,3481,3527,3487,3483,3485,3489,3491,3496,3493"]
比如ID 3257在生成轮播图的最后一个位置!
wp_query 将根据您传递的“顺序”arg 从数据库中获取 posts 所以 它会检查是否post id 是否在数组中,但它不会保留数组的顺序 如果你想以特定顺序显示posts你可以将一些自定义字段(如元键或某些东西)传递给post s 以特定顺序获取它们 或者您可以运行 在post_id 数组上循环调用wp_query 每个id