我不知道如何获取特定的自定义帖子类型,例如分类法是二月。通常,我会尝试使用基于月份的自定义数据。
注册自定义帖子类型
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\'
);
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 type 和
taxonomy 在当前创建多个连接到同一挂钩的实例的同一函数中
init
保持代码的条理化始终很重要。如果您有20个单独的东西需要添加到init
挂钩,创建one function, 然后把它挂到init
. 不要创建20个单独的函数。但有一点要记住,如果一个功能依赖于另一个功能,那么在功能中添加功能的顺序非常重要。按相反顺序添加它们会破坏您的功能
此外,当注册一个新的分类法时,这是一个很好的使用方法register_taxonomy_for_object_type()
要将该分类添加到自定义帖子类型
在为自定义帖子类型注册自定义分类法时,与其说抱歉,不如说安全。使用register_taxonomy_for_object_type()
就在连接它们的功能之后。否则,您可能会遇到陷阱,其中在parse_request
或pre_get_posts
.