如何在WordPress 3.1中按POST格式查询

时间:2011-03-01 作者:PNMG

我正在尝试查询所有帖子格式为“quote”的帖子我已将post格式添加到我的函数中。php与

add_theme_support( \'post-formats\', array( \'image\', \'video\', \'gallery\', \'quote\' ) );
我已选择“报价”作为管理中帖子的格式。下的最后一个示例Taxonomy_Parameters 显示如何显示具有“quote”格式但在主题中运行时不会返回任何帖子的帖子。代码如下:

$args = array(
  \'tax_query\' => array(
    array(
      \'taxonomy\' => \'post-format\',
      \'field\' => \'slug\',
      \'terms\' => \'post-format-quote\'
    )
  )
);
query_posts( $args );
当我查询所有帖子和地点时

echo get_post_format();
在循环中,它在前端返回单词“quote”。此外,当我var\\u dump()查询时,我在数组中看不到关于post格式的任何内容。

有人知道是否可以通过post格式进行查询吗?如果是,怎么做?

编辑-请参阅Bainternet答案下的5条注释:这是在索引中找到的代码。php的第二十个主题的全新安装尝试返回格式类型引号。我返回“no”而不是“quote”。你能看到我应该换的东西吗。

get_header(); ?>
<div id="container">
  <div id="content" role="main">
    <?php $args = array(
      \'tax_query\' => array(
        array(
          \'taxonomy\' => \'post-format\',
          \'field\' => \'slug\',
          \'terms\' => array(\'quote\')
        )
      )
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
      echo get_post_format();
    endwhile; else:
      echo \'no\';
    endif;
    wp_reset_query();      
    ?>
  </div><!-- #content -->
</div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
编辑2-WordPress Codex现在似乎已更改,分类参数部分仅在Google缓存中找到。

编辑3-最终工作代码

$args = array(
  \'tax_query\' => array(
    array(
      \'taxonomy\' => \'post_format\',
      \'field\' => \'slug\',
      \'terms\' => \'post-format-quote\'
    )
  )
);
query_posts( $args );
第一次编辑后的第210次编辑将是。。。

get_header(); ?>
<div id="container">
  <div id="content" role="main">
    <?php $args = array(
      \'tax_query\' => array(
        array(
          \'taxonomy\' => \'post_format\',
          \'field\'    => \'slug\',
          \'terms\'    => \'post-format-quote\'
        )
      )
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
      the_title();
      echo get_post_format();
      echo \'<br />\';
    endwhile; else:
      echo \'no\';
    endif;
    wp_reset_query();      
    ?>
  </div><!-- #content -->
</div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

2 个回复
最合适的回答,由SO网友:Jared White 整理而成

此代码不正确!你有

\'taxonomy\' => \'post-format\'
但它确实需要:

\'taxonomy\' => \'post_format\'
如果没有下划线,查询将无效。我刚刚在我的WordPress 3.1安装上测试了这一点,我花了几个小时的时间才完成。

希望有帮助!!

SO网友:Bainternet

在里面tax_query “terms”接受数组,因此您需要post-format-quote 在这样的数组中:

$args = array(
  \'tax_query\' => array(
    array(
      \'taxonomy\' => \'post-format\',
      \'field\' => \'slug\',
      \'terms\' => array(\'post-format-quote\')
    )
  )
);
query_posts( $args );

结束

相关推荐