首页显示那年今日,调出所有今天的日志

today in history.php代码:

<?php
/*
 * Plugin Name: 那年今日(Today in History)
 * Description: 显示“那年今日”的所有文章,包括今年的文章,支持显示特色图片或第一张文章图片,摘要,分类。
 * Version: 1.9
 * Author: 你的名字
 * License: GPL2
 */

// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// 插件初始化
function tih_register_today_in_history_widget() {
    register_widget( 'Tih_Today_In_History_Widget' );
}
add_action( 'widgets_init', 'tih_register_today_in_history_widget' );

// 插件的主要小部件类
class Tih_Today_In_History_Widget extends WP_Widget {

    // 构造函数,定义小部件
    function __construct() {
        parent::__construct(
            'tih_today_in_history_widget',  // 小部件 ID
            '那年今日文章',  // 小部件名称
            array( 'description' => '显示那年今日的所有文章,包括今年的文章,并支持显示特色图片或第一张文章图片,摘要,分类' )  // 小部件描述
        );
    }

    // 显示小部件内容
    public function widget( $args, $instance ) {
        // 检查是否定义了 before_widget 和 after_widget
        $before_widget = isset($args['before_widget']) ? $args['before_widget'] : '<div class="widget">';
        $after_widget  = isset($args['after_widget']) ? $args['after_widget'] : '</div>';
        $before_title  = isset($args['before_title']) ? $args['before_title'] : '<h2>';
        $after_title   = isset($args['after_title']) ? $args['after_title'] : '</h2>';

        // 输出小部件的 HTML
        echo $before_widget;
        echo $before_title . '那年今日' . $after_title;
        
        // 获取当前日期
        $today = current_time('Y-m-d');
        $month_day = date('m-d'); // 获取当前的月份和日期,忽略年份

        // 获取所有年份中,今天日期的文章(包括今年的)
        $args = array(
            'posts_per_page' => 5, // 显示5篇文章,后续可以根据需求增加设置项
            'orderby' => 'date',
            'order' => 'DESC',
            'date_query' => array(
                array(
                    'month' => date('m'),
                    'day' => date('d'),
                ),
            ),
        );
        
        // 执行查询
        $query = new WP_Query($args);

        if ($query->have_posts()) :
            echo '<ul class="tih-articles-list">';
            while ($query->have_posts()) : $query->the_post();
                
                // 获取文章的特色图片
                $featured_image = get_the_post_thumbnail_url( get_the_ID(), 'thumbnail' );
                
                // 如果没有特色图片,则尝试获取文章中的第一张图片
                if ( ! $featured_image ) {
                    $content = get_the_content();
                    preg_match_all('/<img[^>]+src=["\'](https?:\/\/[^"\']+)["\']/i', $content, $matches);
                    if ( isset($matches[1][0]) ) {
                        $featured_image = $matches[1][0]; // 获取第一张图片的URL
                    }
                }

                // 输出文章
                echo '<li class="tih-article-item">';
                
                // 如果有特色图片,显示它
                if ( $featured_image ) {
                    echo '<div class="tih-image-wrapper"><img src="' . esc_url( $featured_image ) . '" alt="' . get_the_title() . '" class="tih-featured-image" /></div>';
                }

                echo '<div class="tih-content-wrapper">';
                
                // 显示文章标题
                echo '<a href="' . get_permalink() . '" class="tih-title">' . get_the_title() . '</a>';
                
                // 获取文章的摘要,并限制在300字符以内
                $excerpt = get_the_excerpt();
                $excerpt_length = 400;  // 修改为 300 或 400,控制摘要的字符数

                // 使用 wp_trim_words 来控制字符数
                if ( strlen( $excerpt ) > $excerpt_length ) {
                    $excerpt = mb_substr( $excerpt, 0, $excerpt_length, 'UTF-8') . '...'; // 使用mb_substr来确保截取的是完整的字符
                }

                if ( $excerpt ) {
                    echo '<p class="tih-excerpt">' . $excerpt . '</p>';
                }

                // 显示文章分类
                $categories = get_the_category();
                if ( ! empty( $categories ) ) {
                    echo '<p class="tih-categories">分类:';
                    foreach ( $categories as $category ) {
                        echo '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . esc_html( $category->name ) . '</a> ';
                    }
                    echo '</p>';
                }

                // 处理发布时间(日期 + X YEARS AGO)
                $post_date = get_the_date('Y-m-d'); // 获取文章的发布日期
                $year_diff = date('Y') - get_the_date('Y');
                $time_label = '';
                $full_date = get_the_date('Y年m月d日'); // 完整的发布日期格式(例如:2024年10月7日)

                // 如果是今年的文章
                if ( date('Y') == get_the_date('Y') ) {
                    // 今年的文章,显示完整的日期
                    $time_label = '';
                    echo '<span class="tih-publish-date">日期:' . $full_date . '</span>';
                } else {
                    // 过去年份的文章,显示相对时间
                    if ($year_diff == 1) {
                        $time_label = '(One Year Ago)';
                    } else {
                        $time_label = '(' . $year_diff . ' Years Ago)';
                    }
                    // 显示发布日期和过去的年数
                    echo '<span class="tih-publish-date">日期:' . $full_date . ' ' . $time_label . '</span>';
                }

                echo '</div>'; // .tih-content-wrapper
                echo '</li>';
            endwhile;
            echo '</ul>';
        else :
            echo '<p>今天没有相关文章。</p>';
        endif;

        wp_reset_postdata();
        echo $after_widget;
    }

    // 后台小部件设置
    public function form( $instance ) {
        // 可以在这里添加后台的设置选项
    }

    // 保存小部件的设置
    public function update( $new_instance, $old_instance ) {
        return $new_instance;
    }
}

// 插件样式
function tih_plugin_styles() {
    wp_enqueue_style( 'tih-plugin-styles', plugin_dir_url(__FILE__) . 'system.css' );
}
add_action('wp_enqueue_scripts', 'tih_plugin_styles');

system.css代码

.tih-articles-list {
    list-style-type: none;
    padding: 0;
}

.tih-article-item {
    display: flex;
    margin-bottom: 20px;
}

.tih-image-wrapper {
    margin-right: 15px;
    position: relative;
}

.tih-featured-image {
    width: 100px;
    height: 100px;
    object-fit: cover;
    border-radius: 8px;
}

.tih-content-wrapper {
    flex-grow: 1;
}

.tih-title {
    font-size: 18px;
    font-weight: bold;
    color: #333;
    text-decoration: none;
    margin: 10px 0;
}

.tih-title:hover {
    text-decoration: underline;
}

.tih-excerpt {
    font-size: 14px;
    color: #666;
    margin-bottom: 10px;
}

.tih-categories {
    font-size: 12px;
    margin-top: 5px;
}

.tih-categories a {
    font-size: 12px;
    color: #0073aa;
    text-decoration: none;
}

.tih-categories a:hover {
    text-decoration: underline;
}

.tih-publish-date {
    font-size: 12px;
    color: #999;
    margin-top: 5px;
}

.tih-publish-date span {
    font-weight: bold;
}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容