在WordPress中,默认情况下,文章是根据发布日期自动归档的,但通常这些归档是按月或按年显示的,而不是按日。然而,如果你想在WordPress中创建一个自定义的分类系统,用于按年、月、日对文章进行分类,你可以使用WordPress的自定义分类法(Taxonomy)和分类项(Term)来实现。
以下是一个步骤指南和示例代码,用于在WordPress中创建一个按年、月、日分类文章的自定义分类法:
1. 注册自定义分类法
首先,你需要在WordPress的functions.php
文件中(通常位于你的主题目录中)注册一个新的自定义分类法。你可以使用register_taxonomy()
函数来完成这个任务。
function register_date_taxonomy() {
$labels = array(
'name' => _x( '日期', 'taxonomy general name' ),
'singular_name' => _x( '日期', 'taxonomy singular name' ),
'search_items' => __( '搜索日期' ),
'all_items' => __( '所有日期' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( '编辑日期' ),
'update_item' => __( '更新日期' ),
'add_new_item' => __( '添加新日期' ),
'new_item_name' => __( '新日期名称' ),
'menu_name' => __( '日期' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
);
register_taxonomy('date_category', array('post'), $args);
}
add_action('init', 'register_date_taxonomy');
但请注意,上面的代码创建了一个普通的层次结构分类法,而不是专门用于日期的。由于WordPress本身不支持按日期创建单独的分类项,我们需要使用其他方法来实现这一点。
2. 创建日期分类项
由于WordPress不会自动为每篇文章创建日期分类项,你需要手动或通过一个脚本来完成这个任务。但是,这通常不是最佳实践,因为这将导致大量的分类项,并且可能难以管理。
3. 使用其他方法显示日期归档
相反,你可以使用WordPress的归档页面(Archives)功能来显示按日期组织的文章。WordPress的归档页面是自动生成的,并可以按年、按月或按日显示文章。
4. 自定义归档页面模板
如果你想要更多的自定义选项,你可以创建自定义的归档页面模板,使用WordPress的查询参数(如year
、monthnum
和day
)来检索和显示特定日期的文章。
示例:自定义归档页面模板
你可以创建一个名为archive-date.php
的模板文件(放在你的主题目录中),并使用以下代码作为起点:
<?php
get_header();
?>
<section id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
if (is_date_archive()) {
$year = get_query_var('year');
$month = get_query_var('monthnum');
$day = get_query_var('day');
// 显示年份、月份和日期
echo '<h1>归档:';
if ($year) {
echo $year;
if ($month) {
echo ' 年 ' . sprintf('%02d', $month);
if ($day) {
echo ' 月 ' . sprintf('%02d', $day);
}
}
}
echo '</h1>';
// 显示文章列表
while (have_posts()) : the_post();
get_template_part('content', get_post_format());
endwhile;
// 分页链接(如果有的话)
the_posts_pagination(array(
'prev_text' => __('上一页'),
'next_text' => __('下一页'),
'before_page_number' => '<span class="meta-nav screen-reader-text">' .