我创建名为“project”的自定义帖子类型。
project的自定义分类法命名为“project\\u cat”。
所以我的问题是,如果我创建一个“苹果”分类法,那么URL将是http://localhost/project_cat/apple.
如何显示属于“apple”分类法的帖子?
// Custom post type project
function ateam_project_post_types(){
$labels = array(
\'name\' => \'全部的專案\',
\'add_new\' => \'新增任務\',
\'add_new_item\' => \'新增任務\',
\'edit_item\' => \'編輯專案\',
\'all_items\' => \'全部任務\',
\'view_item\' => \'查看專案\',
\'search_items\' => \'搜尋任務\',
\'not_found\' => \'沒有相關專案\',
\'not_found_in_trash\'=> \'垃圾桶裡並沒有相關專案\',
\'menu_name\' => \'專案管理系統\'
);
$args = array(
\'supports\' => array(\'title\',\'editor\'),
\'rewrite\' => array(\'slug\' => \'project\'),
\'public\' => true,
\'has_archive\' => true,
\'hierarchical\' => false,
\'menu_icon\' => \'dashicons-text-page\',
\'menu_position\' => 1,
\'labels\' => $labels
);
register_post_type(\'project\',$args);
}
add_action(\'init\',\'ateam_project_post_types\');
// custom taxonomy of project
function reg_cat() {
$labels = array(
\'search_items\' =>\'搜尋專案\',
\'all_items\' =>\'所有專案\',
\'add_new_item\' =>\'新增專案\',
\'menu_name\' =>\'全部專案\'
);
$args = array(
\'labels\' => $labels,
\'hierarchical\'=> true,
\'show_admin_column\' => true,
\'rewrite\' => array(\'slug\' => \'project_cat\')
);
register_taxonomy( \'project_cat\',array(\'project\'),$args);
}
add_action(\'init\', \'reg_cat\');
最合适的回答,由SO网友:Jacob Peattie 整理而成
我很高兴你问这个问题,因为做错这件事是这个网站上最常见的错误。它甚至都不接近#2。
答案是你不需要做任何事情。WordPress将根据URL为您查询正确的帖子。只需使用普通循环和模板标记即可显示它们:
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php the_title(); ?>
<!-- etc. -->
<?php endwhile; ?>
<?php endif; ?>
该循环是WordPress根据URL正确查询的帖子的循环。所以不需要任何定制
WP_Query
,
get_posts()
或
pre_get_posts
行动不是那样的。
将使用的确切模板取决于主题中的文件,并由template hierarchy, 但是所有这些模板应该只包含与上面完全相同的循环。您需要创建taxonomy-project_cat.php
模板是指如果您希望此分类法的存档看起来不同或使用不同的标记,如果您确实希望这样做,那么您仍然可以使用相同的循环,因为查询总是已经得到处理。