首页 > 解决方案 > 根据数组中找到的 ID 运行 wp_query

问题描述

我有一个会话数组 ( $_SESSION['recently_viewed']),它当前输出以下内容:

array(3) { [0]=> int(635) [1]=> int(643) [2]=> int(474) }

635643并且474IDs我的自定义帖子类型中的帖子,称为accessories.

我正在尝试显示属于该数组的帖子,但不确定如何在逻辑上执行此操作。

到目前为止,我有:

<?php
global $post;

$args = array(
  'post_type' => 'accessories',
  'p' => $_SESSION['recently_viewed'], // something like this, but logically correct
  'post_status' => 'publish',
);

$query = new WP_Query( $args );

if($query->have_posts() ) :
  while ( $query->have_posts() ) : $query->the_post();
    echo the_title();
  endwhile; wp_reset_postdata(); ?>
<?php endif; ?>

我该怎么做?

标签: phparrayswordpress

解决方案


您可以在 WP_Query 的 post__in 参数中传递结果数组。

$args = array(
  'post_type' => 'accessories',
  'post__in' => $_SESSION['recently_viewed'], 
  'post_status' => 'publish',
);

但是您可能需要重组 $_SESSION['recently_viewed'] 并确保它是一个有效的数组。如果它已经有效,那么上面的查询应该可以正常工作。

文档中的更多信息。

// https://developer.wordpress.org/reference/classes/wp_query/#post-page-parameters


推荐阅读