获取自定义帖子类型,其中分类..

时间:2014-07-26 作者:Marko

我不知道如何获取特定的自定义帖子类型,例如分类法是二月。通常,我会尝试使用基于月份的自定义数据。

注册自定义帖子类型

add_action( \'init\', \'plants\' );
function plants() {
    $args = array( labels and etc   );
    register_post_type( \'plants\' , $args );
}
为自定义帖子类型注册分类法

add_action(\'init\', \'months\');
function months() {
    $args =  array ( labels and etc );  
register_taxonomy(\'months\', \'plants\', $args);
}
正在获取数据

$args = array( \'post_type\' => \'plants\'  ); 
$plants= new WP_Query($args);
if ($plants->have_posts()) : while ($plants->have_posts()): $plants->the_post(); ?>
           <?php the_title(); ?>
    <?php endwhile; ?>
<?php endif; ?>
到目前为止一切正常,我得到了3个项目。但如何仅获取具有特定分类法的项?以下操作没有任何作用

$args = array(
    \'post_type\' => \'plants\',
    \'months\'=>\'february\'
    );

1 个回复
SO网友:Pieter Goosen

如果使用的信息正确,代码应该可以正常工作。您可以像以前那样直接使用查询变量。只需记住在自定义查询后重置帖子数据,这非常重要!

您也可以尝试使用tax_query 在里面WP_Query

$args = array(
    \'post_type\' => \'plants\',
    \'tax_query\' => array(
        array(
             \'taxonomy\' => \'months\',
             \'field\' => \'slug\',
             \'terms\' => \'february\'
          )
       )
);
然而,我想指出,你应该regsiter your custom post typetaxonomy 在当前创建多个连接到同一挂钩的实例的同一函数中init

保持代码的条理化始终很重要。如果您有20个单独的东西需要添加到init 挂钩,创建one function, 然后把它挂到init. 不要创建20个单独的函数。但有一点要记住,如果一个功能依赖于另一个功能,那么在功能中添加功能的顺序非常重要。按相反顺序添加它们会破坏您的功能

此外,当注册一个新的分类法时,这是一个很好的使用方法register_taxonomy_for_object_type() 要将该分类添加到自定义帖子类型

在为自定义帖子类型注册自定义分类法时,与其说抱歉,不如说安全。使用register_taxonomy_for_object_type() 就在连接它们的功能之后。否则,您可能会遇到陷阱,其中在parse_requestpre_get_posts.

结束

相关推荐