如何通过相关类别ID获取自定义帖子类型

时间:2015-07-14 作者:xzegga

我已经在函数中创建了自定义帖子类型。php文件。

我在服务菜单部分创建了4个类别,aa、bb、cc和dd,我试图为特定类别获取最新的5篇帖子,但我可以将其存档。

这是我的查询帖子:

query_posts(array(\'showposts\' => 5, \'post_type\' => array(\'servicios\'), \'cat\' => 14));
14是类别aa的id。例如,我尝试了标记id、类别名称和术语,但没有成功。我的问题是什么?

更新时间:

以下是我现在的论点:

$args = array(
  \'paged\' => 1,
  \'posts_per_page\' => \'5\',
  \'offset\' => 0,
  \'post_status\' => \'publish\',
  \'ignore_sticky_posts\' => 0,
  \'orderby\' => \'date\',
  \'order\' => \'DESC\',
  \'post_type\' => array (
                    \'servicios\' => \'servicios\',
                  ),
   \'cat\' => \'15\'
);
这是我生成的wp\\U查询的sql查询:

SELECT SQL_CALC_FOUND_ROWS mt24xi_posts.ID FROM mt24xi_posts 
    INNER JOIN mt24xi_term_relationships ON (mt24xi_posts.ID = mt24xi_term_relationships.object_id) WHERE 1=1 
    AND ( mt24xi_term_relationships.term_taxonomy_id IN (12) ) 
    AND mt24xi_posts.post_type IN (\'post\', \'page\') 
    AND (mt24xi_posts.post_status = \'publish\' OR mt24xi_posts.post_author = 1 
    AND mt24xi_posts.post_status = \'private\') 
    GROUP BY mt24xi_posts.ID ORDER BY mt24xi_posts.post_date DESC LIMIT 0, 5
如果我删除“AND mt24xi\\u posts.post\\u type IN(\'post\',\'page\')”查询工作正常

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

解决此问题两天后,我用我的分类名称和所请求类别的slug添加了tax\\u query参数来修复此问题:

$args = array(
  \'post_type\' => array (
                    \'servicios\' => \'servicios\',
                  ),
   \'tax_query\' => array(
        array(
          \'taxonomy\' => \'category\',
          \'field\' => \'slug\',
          \'terms\' => \'dgit\'
        )
    )
);

SO网友:Brad Dalton

不使用query_posts

新建WP_Query 或者使用pre\\u get\\u posts修改现有查询。

$args = array(
    \'post_type\' => \'servicios\',
    \'category_name\' => \'category-name\'
);
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
    echo \'<ul>\';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo \'<li>\' . get_the_title() . \'</li>\';
    }
    echo \'</ul>\';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
将类别名称与类别名称交换。

结束

相关推荐