如何在WordPress 3.1中按帖子格式查询


10

我正在尝试查询帖子格式为“ quote”的所有帖子。我已经将发布格式添加到我的functions.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_dump()查询时,我在数组中看不到任何有关帖子格式的内容。

有谁知道是否可以通过帖子格式查询?如果可以,怎么办?

编辑-请参阅Bainternet的答案下的5条评论:这是在尝试返回格式类型引号的全新安装的二十个主题的index.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 );

第一次编辑的第二十个编辑将是...

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(); ?>

Answers:


7

该代码不正确!你有

'taxonomy' => 'post-format'

但这确实需要:

'taxonomy' => 'post_format'

没有下划线,查询将无效。在将头发拉了几个小时之后,我刚刚在WordPress 3.1安装上对其进行了测试。

希望有帮助!!


非常感谢您抓住这一点。我可以保证我直接从Codex页面复制了原始代码。(也许一次也在那里错了。)现在可以工作了。除了将其更改为post_format之外,我还需要将'terms'=>'quote'更改回'terms'=>'post-format-quote'。对于其他感兴趣的人,请参阅原始文章的编辑3以获取最终代码。
PNMG 2011年

当然,很高兴我能够提供帮助。:)
贾里德·怀特

2

tax_query“条款”中接受数组,因此您需要将post-format-quote数组放入这样:

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

有没有人尝试过并使其工作。我添加了数组部分,它仍然没有返回任何内容。post-format-quote是否正确放入数组中?
PNMG 2011年

不,不是的,您不需要将自己的帖子格式设置为“ quote”,而不是post-format-quote
Bainternet 2011年

您是说我应该放'terms'=> array('quote'),因为那是我在add_theme_support函数中定义为引号的内容?我也尝试过。仍然没有运气。
PNMG 2011年

好'terms'=> array('quote')在我这里工作,尝试用'echo get_post_format();来回显帖子格式。看看你会得到什么
Bainternet

好的,所以当我回声我得到'quote'。在无奈之下,我关闭了所有插件,并切换回默认的二十主题,并创建了3个测试帖子,其中一个带有报价格式。我已经更新了functions.php文件,以将引号添加到add_theme_support调用中,并更新了index.php以使用以下代码:[请参见原始文章底部的编辑]
PNMG 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.