我在我的插件中制作了一个简码,效果很好。短代码需要接受一些参数并创建一个带有输出的自定义循环。
参数之一是为 ($markers) 输出循环的帖子数
$args=array(
'meta_key'=>'_mykey',
'post_status'=>'publish',
'post_type'=>'post',
'orderby'=>'date',
'order'=>'DESC',
'posts_per_page'=>$markers,
);
$wp_query = new WP_Query();
$wp_query->query($args);
if ($wp_query->have_posts()) : while (($wp_query->have_posts()) ) : $wp_query->the_post();
// do the loop using get_the_id() and $post->id
endwhile;endif;
wp_reset_query();//END query
在某些情况下,我需要来自所有帖子的数据($markers = '-1' )
,有时只有一个($markers = '1' )
或多个($markers = 'x')
。
所有这些在单页/帖子上都很好用 - 但我的问题是,当这个函数位于我有多个帖子(!is_single)和($ markers = '1'
)的地方时,它总是会返回最新帖子的数据,而不是对于正确的..(例如在默认的 wordpress 主题中,它将显示 10 个帖子 - 它们都是相同的数据)
这显然是一个问题$post->ID
- 但是在 wp 循环之外进行自定义循环时,我怎样才能拥有正确的帖子 ID?
我试图通过
global $post;
$thePostIDtmp = $post->ID; //get the ID before starting new query as temp id
$wp_query = new WP_Query();
$wp_query->query($args);
// Start Custom Loop
if (!is_single()){
$post_id_t = $thePostIDtmp;}
else {
$post_id_t = $post->ID;}
然后使用 $post_id_t
- 但它似乎不起作用,我不应该使用 get_the_id() 吗?还是我不应该使用查询(并使用 get_posts)?
任何想法/解决方案/想法?