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');