feat(pages): 1:1 文档导航 + 文章归档 (zibll documentnav/archives)
Category accordion + AJAX cat/search posts for documentnav; archives month lists with view/comment/like meta, sidebar and comments shell.
This commit is contained in:
1 parent
7dc0d0e92a
commit
7bf0bc81b7
9 files changed
+1072
-207
No files matched your search
@@ -1,9 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Template Name: AKSRT - Archives
|
||||
* Template Name: AKSRT - 文章归档
|
||||
* Template Post Type: page
|
||||
*
|
||||
* 文章归档页:按年月分组展示全站文章。
|
||||
* Zibll pages/archives.php 1:1 — month groups with view/comment/like meta,
|
||||
* theme-box shell, sidebar + comments.
|
||||
*
|
||||
* @package AKSRT
|
||||
*/
|
||||
@@ -11,65 +12,104 @@
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
get_header();
|
||||
global $wpdb;
|
||||
|
||||
if (function_exists('aksrt_archive_open_shell')) {
|
||||
aksrt_archive_open_shell([
|
||||
'main_class' => 'site-main container content-shell content-shell--page page-content-default',
|
||||
'has_sidebar' => false,
|
||||
'page_kind' => 'archives',
|
||||
]);
|
||||
}
|
||||
$header_style = (string) get_post_meta(get_queried_object_id(), 'page_header_style', true);
|
||||
?>
|
||||
<div class="content-main content-main--page content-main--archives">
|
||||
<?php
|
||||
get_template_part('templates/parts/page-header', null, [
|
||||
'title' => esc_html__('文章归档', 'aksrt'),
|
||||
]);
|
||||
?>
|
||||
<main class="container page-template-archives">
|
||||
<div class="content-wrap">
|
||||
<div class="content-layout">
|
||||
<?php if ($header_style !== '1' && $header_style !== 'not') : ?>
|
||||
<div class="theme-box radius8 main-bg main-shadow box-body mb20">
|
||||
<h1 class="article-title"><?php echo esc_html(get_the_title() ?: __('文章归档', 'aksrt')); ?></h1>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="aksrt-archives">
|
||||
<?php
|
||||
$years = $wpdb->get_results(
|
||||
"SELECT DISTINCT YEAR(post_date) AS year, MONTH(post_date) AS month, COUNT(*) AS count
|
||||
FROM {$wpdb->posts}
|
||||
WHERE post_type = 'post' AND post_status = 'publish'
|
||||
GROUP BY YEAR(post_date), MONTH(post_date)
|
||||
ORDER BY year DESC, month DESC"
|
||||
); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
||||
|
||||
$current_year = 0;
|
||||
foreach ($years as $row) :
|
||||
if ((int) $row->year !== $current_year) :
|
||||
$current_year = (int) $row->year;
|
||||
?>
|
||||
<h2 class="aksrt-archives__year"><?php echo esc_html((string) $current_year); ?></h2>
|
||||
<?php endif; ?>
|
||||
<h3 class="aksrt-archives__month">
|
||||
<?php echo esc_html(sprintf('%d 月 (%d 篇)', (int) $row->month, (int) $row->count)); ?>
|
||||
</h3>
|
||||
<ul class="aksrt-archives__list">
|
||||
<?php
|
||||
$month_posts = get_posts([
|
||||
'year' => (int) $row->year,
|
||||
'monthnum' => (int) $row->month,
|
||||
'posts_per_page' => -1,
|
||||
'post_status' => 'publish',
|
||||
]);
|
||||
foreach ($month_posts as $mp) :
|
||||
?>
|
||||
<li class="aksrt-archives__item">
|
||||
<span class="aksrt-archives__date"><?php echo esc_html(get_the_date('m-d', $mp)); ?></span>
|
||||
<a href="<?php echo esc_url(get_permalink($mp->ID)); ?>" class="aksrt-archives__link"><?php echo esc_html($mp->post_title); ?></a>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<div class="theme-box radius8 main-bg main-shadow">
|
||||
<?php if ($header_style === '1') : ?>
|
||||
<div class="box-body">
|
||||
<h1 class="article-title"><?php echo esc_html(get_the_title() ?: __('文章归档', 'aksrt')); ?></h1>
|
||||
</div>
|
||||
<?php
|
||||
if (function_exists('aksrt_archive_close_shell')) {
|
||||
aksrt_archive_close_shell(['has_sidebar' => false]);
|
||||
}
|
||||
<?php endif; ?>
|
||||
<article class="box-body">
|
||||
<?php
|
||||
$previous_year = 0;
|
||||
$previous_month = 0;
|
||||
$ul_open = false;
|
||||
|
||||
$myposts = get_posts([
|
||||
'numberposts' => -1,
|
||||
'orderby' => 'date',
|
||||
'order' => 'DESC',
|
||||
'post_status' => 'publish',
|
||||
'post_type' => 'post',
|
||||
'suppress_filters' => false,
|
||||
]);
|
||||
|
||||
foreach ($myposts as $post) :
|
||||
setup_postdata($post);
|
||||
$year = (int) get_the_time('Y', $post);
|
||||
$month = (int) get_the_time('n', $post);
|
||||
$day = (int) get_the_time('j', $post);
|
||||
|
||||
if ($year !== $previous_year || $month !== $previous_month) :
|
||||
if ($ul_open) {
|
||||
echo '</ul></div>';
|
||||
}
|
||||
echo '<div class="zib-widget mb20"><h4 class="text-center title-h-center">';
|
||||
echo esc_html(get_the_time('Y年n月', $post));
|
||||
echo '</h4><ul class="list-inline archives-month-list">';
|
||||
$ul_open = true;
|
||||
$previous_year = $year;
|
||||
$previous_month = $month;
|
||||
endif;
|
||||
|
||||
$views = function_exists('aksrt_get_post_views') ? (int) aksrt_get_post_views($post->ID) : 0;
|
||||
$likes = (int) get_post_meta($post->ID, 'like', true);
|
||||
if ($likes <= 0) {
|
||||
$likes = (int) get_post_meta($post->ID, 'aksrt_like', true);
|
||||
}
|
||||
$comments = (int) get_comments_number($post->ID);
|
||||
?>
|
||||
<li class="author-set-left muted-color">
|
||||
<time datetime="<?php echo esc_attr(get_the_date('c', $post)); ?>"><?php echo esc_html((string) $day); ?><?php esc_html_e('日', 'aksrt'); ?></time>
|
||||
</li>
|
||||
<li class="author-set-right">
|
||||
<a href="<?php echo esc_url(get_permalink($post)); ?>"><?php echo esc_html(get_the_title($post)); ?></a>
|
||||
<span class="muted-2-color ml6" title="<?php esc_attr_e('阅读', 'aksrt'); ?>">
|
||||
<i class="fa fa-eye" aria-hidden="true"></i><?php echo esc_html((string) $views); ?>
|
||||
</span>
|
||||
<?php if ($comments > 0) : ?>
|
||||
<span class="muted-2-color ml6" title="<?php esc_attr_e('评论', 'aksrt'); ?>">
|
||||
<i class="fa fa-comment-o" aria-hidden="true"></i><?php echo esc_html((string) $comments); ?>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
<?php if ($likes > 0) : ?>
|
||||
<span class="muted-2-color ml6" title="<?php esc_attr_e('点赞', 'aksrt'); ?>">
|
||||
<i class="fa fa-thumbs-o-up" aria-hidden="true"></i><?php echo esc_html((string) $likes); ?>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
</li>
|
||||
<?php
|
||||
endforeach;
|
||||
wp_reset_postdata();
|
||||
if ($ul_open) {
|
||||
echo '</ul></div>';
|
||||
}
|
||||
if (empty($myposts)) {
|
||||
echo '<p class="muted-2-color text-center">' . esc_html__('暂无文章', 'aksrt') . '</p>';
|
||||
}
|
||||
?>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
if (comments_open() || get_comments_number()) {
|
||||
comments_template();
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php get_sidebar(); ?>
|
||||
</main>
|
||||
<?php
|
||||
get_footer();
|
||||
Reference in new issue
Block a user