MENU

Swellのサイドバーの新着記事一覧で、各記事タイトルに投稿日を表示させるスクリプト

functions.phpに以下を追加することで、ウィジェットに日付付きの投稿一覧が追加される。
このウィジェットを共有サイドバーなどに設定すればよろし。

たんにswell標準の日付付き投稿一覧のウィジェットを使うほうが簡単ではある。

class My_Recent_Posts_With_Date extends WP_Widget {
    function __construct() {
        parent::__construct(
            'recent_posts_with_date',
            '最近の投稿(日付付き)'
        );
    }

    function widget($args, $instance) {
        echo $args['before_widget'];
        if (!empty($instance['title'])) {
            echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title'];
        }

        $recent_posts = wp_get_recent_posts([
            'numberposts' => 5,
            'post_status' => 'publish'
        ]);
        echo '<ul>';
        foreach ($recent_posts as $post) {
            echo '<li>';
            echo '<a href="' . get_permalink($post['ID']) . '">' . esc_html($post['post_title']) . '</a>';
            echo '<br>';
            echo ' <span style="font-size:0.9em;color:#888;">' . get_the_date('Y年m月d日', $post['ID']) . '</span>';
            echo '</li>';
        }
        echo '</ul>';

        echo $args['after_widget'];
    }

    function form($instance) {
        $title = !empty($instance['title']) ? $instance['title'] : '最近の投稿';
        ?>
        <p>
            <label for="<?php echo esc_attr($this->get_field_id('title')); ?>">タイトル:</label>
            <input class="widefat"
                id="<?php echo esc_attr($this->get_field_id('title')); ?>"
                name="<?php echo esc_attr($this->get_field_name('title')); ?>"
                type="text"
                value="<?php echo esc_attr($title); ?>">
        </p>
        <?php
    }

    function update($new_instance, $old_instance) {
        $instance = [];
        $instance['title'] = sanitize_text_field($new_instance['title']);
        return $instance;
    }
}
function register_recent_posts_with_date_widget() {
    register_widget('My_Recent_Posts_With_Date');
}
add_action('widgets_init', 'register_recent_posts_with_date_widget');
目次