通过ID查询帖子总是返回最新帖子(WordPress)

时间:2020-03-08 16:17:26

标签: php html wordpress while-loop

我正在尝试通过ID检索单个帖子Stories是我的自定义帖子类型,目前有三篇帖子:

  1. 博客1(ID:1)
  2. 博客2(ID:14)
  3. 博客3(ID:49)

我有一个名为$story_one的变量。 $story_one的值为14

我现在正尝试从ID为14的帖子中检索信息,所以我已经完成了:

<?php

$args = array(
  'post_type'      => 'stories',
  'id'             => $story_one,
  'posts_per_page' => 1
);
$query = new WP_Query( $args );
if( $query->have_posts() ) {
  while( $query->have_posts() ) {
    $query->the_post(); 
    the_title();
  } 
  wp_reset_postdata();
}

?>

这将返回博客3 。博客3是stories中的最新帖子。当我指定它从ID为14(博客2)的帖子中提取内容时,为什么会这样。向我显示最新博客的内容?

2 个答案:

答案 0 :(得分:0)

您可以像这样使用WP_Query()来代替get_post()

<?php

  $post = get_post($story_one);

  if(!empty($post)):
    echo $post->post_title;
    echo get_field("field name", $story_one);
  endif;

?>

关于仅从stories个帖子类型获取信息。每种帖子类型都存储在相同的帖子表中,因此它们必须使用不同的帖子ID。

parameter函数中的第二个get_field()是帖子ID。

答案 1 :(得分:0)

帖子ID的query_varp而不是id

    $args = array(
      'post_type'      => 'stories',
      'p'              => $story_one,
      'posts_per_page' => 1
    );
    $query = new WP_Query( $args );
    if( $query->have_posts() ) {
      while( $query->have_posts() ) {
        $query->the_post(); 
        the_title();
      } 
      wp_reset_postdata();
    }
相关问题