来自query_posts

时间:2016-06-06 11:25:44

标签: wordpress post

我正在使用WordPress模板,根据Ids和帖子类型为每个帖子生成一个非常漂亮的缩略图。 (参考文献:https://blinkdemo.wordpress.com/

由于我被要求创建一个可以显示某个类别的某个帖子的自定义页面,我决定为模板页面创建一个查询页面slug的查询,然后列出包含某个类别+标签的帖子( 'comparativas')。

我遇到的问题是页面上显示的帖子列表没有显示每个帖子上的相应缩略图。

缩略图基本上是用这些行动态生成的:

$post_id = $post->ID;
    $thumbnail_id    = get_post_thumbnail_id( $post_id );
    $thumbnail_image = wp_get_attachment_image_src( $thumbnail_id,$thumbnail_size );

问题是我无法找到发送到上面函数的特定post id的方法,因为主$ wp_query->帖子;检索页面ID而不是query_posts方法请求的帖子。

循环显示正确的帖子,但当我回显post-gt; ID时,它会显示页面ID。

我的查询是:

global $wp_query;
 // concatenate the query
 $args = 'cat='.$idCategory.'&tag=comparativas';

 query_posts( $args );
 $posts = $wp_query->posts;
 $current_id = get_the_ID(); //-> this returns the page id

如果你能告诉我如何覆盖全局$wp_query;,那么模板可以处理帖子列表的相应ID。这将是很棒的。 任何线索?

最佳, 涓

2 个答案:

答案 0 :(得分:0)

你可以使用setup_postdata($ post)

然后get_the_ID()再次起作用:)

答案 1 :(得分:0)

它不起作用只是因为你没有循环它们。你可以做很多事。

以下两个更为常见:

  1. 使用query_posts
  2. 覆盖查询

    $args = array('cat' => $idCategory,'tag' => 'comparativas'); query_posts($args); if(have_posts()){ while(have_posts()){ the_post(); $current_id = get_the_ID(); // this return what you want now the_title(); // this works as expected } } wp_reset_query(); // get previous query back

    1. 获取一个WP_Post对象数组和setup_postdata,或者只是循环遍历它们
    2. $args = array('cat' => $idCategory,'tag' => 'comparativas');
      $posts_i_want = get_posts($args); foreach( $posts_i_want as $post ){ setup_postdata($post); $current_id = get_the_ID(); // this return what you want now the_title(); // this works as expected } wp_reset_postdata(); // get previous postdata back

      我个人更喜欢大多数情况下的第一个

      干杯