如何在WordPress查询中获取分类法类别的所有记录?

时间:2014-10-29 10:22:40

标签: php wordpress

我使用了简单的内容类型插件&在WP调用食谱中创建了Post类型。我还在其中添加了分类法类别&创建了4个类别,如Starter,Drinks等。

现在在WP查询中,我需要获取启动器的所有记录。 那我该怎么办呢?

我正在使用此查询,但它不起作用。它提供了Recipes post类型的所有记录 这是查询

$recipes = query_posts('post_type=recipes&taxonomy=recipescategory&category_name=Starters');

3 个答案:

答案 0 :(得分:5)

您的代码中存在很多错误,并且对类别存在误解。

  • 绝不使用query_posts构建自定义查询
  

注意:此功能并非由插件或主题使用。如后面所述,有更好的,更高性能的选项来改变主查询。 query_posts()是一种过于简单化和有问题的方法来修改页面的主要查询,方法是用新的查询实例替换它。它是低效的(重新运行SQL查询)并且在某些情况下会彻底失败(特别是在处理帖子分页时经常会失败)

  • 如果您必须运行自定义查询,请使用WP_Queryget_posts

  • category_name的类别为 slug 不是名称。参数的名称是欺骗性的

  • "类别"属于自定义分类的术语称为术语。我写了一篇帖子,我也把它包含在您可以查看的{x}中,它描述了差异。

  • 要从自定义分类中检索帖子,您需要使用here。类别参数在这里不起作用

如上所述,请创建您的查询,使其看起来像这样

$args = array(
    'post_type' => 'recipes',
    'tax_query' => array(
        array(
            'taxonomy' => 'recipescategory',
            'field'    => 'name',
            'terms'    => 'Starters',
        ),
    ),
);
$query = new WP_Query( $args );
if( $query->have_posts() ){
    while( $query->have_posts() ) {
        $query->the_post();

        //Your loop elements

    }
    wp_reset_postdata();
}

答案 1 :(得分:1)

试一试

 $ar = array (
       'post_type'=>'recipes',
       'taxonomy'=>'recipescategory',
       'category_name'=>'Starters'
    );     
    $posts = get_posts($ar);

** foreach循环**

 foreach($posts as $p){ ?>
             <div class="sub_cont">    
              <div class="sub_img"> 

                <?php $url = wp_get_attachment_url( get_post_thumbnail_id($p->ID));?>       
                <a href="<?php echo $permalink = get_permalink( $p->ID); ?>"><img src="<?php echo $url; ?>" longdesc="URL_2" alt="Text_2" /> </a>

            </div>
            <div class="desc_title">
               <a href="<?php echo $permalink = get_permalink( $p->ID); ?>">
                   <?php echo $post_title=$p->post_title; ?>
               </a>
           </div>
           <div class="cont_add"></div>          
        </div> 
    <?php } ?>

答案 2 :(得分:0)

您可以使用get_posts功能

$args = array("post_type"=>"recipes","category_name"=>"starter","posts_per_page"=>20);
$starters = get_posts($args);