一份完整的WordPress年月日的分类

在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的查询参数(如yearmonthnumday)来检索和显示特定日期的文章。

示例:自定义归档页面模板

你可以创建一个名为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">' .