利用function和短代码添加文章列表页面
前言
虽然已经有站点地图插件生成出sitemap界面了,但是它包含了分类和标签,而且很多插件不支持按照月份归类,所以我就自己想办法搞了一个页面,下面是教程。
教程
首先将如下代码放到主题的function.php内,然后将短代码放到需要展示的页面中
代码如下
// 注册文章列表短代码
function wp_post_list_shortcode($atts) {
// 获取所有文章
$posts = get_posts(array(
'numberposts' => -1
));
// 初始化归档数组
$archives = array();
// 遍历所有文章
foreach ($posts as $post) {
// 获取文章发布日期
$date = get_the_date('Ym', $post->ID);
// 如果归档数组中没有该日期,则添加
if (!array_key_exists($date, $archives)) {
$archives[$date] = array();
}
// 将文章添加到对应的归档日期中
array_push($archives[$date], $post);
}
// 初始化输出字符串
$output = '';
// 遍历归档数组,按年月添加文章列表
$prev_year = '';
$prev_month = '';
foreach ($archives as $date => $posts) {
// 获取年份和月份
$year = substr($date, 0, 4);
$month = substr($date, 4, 2);
// 如果年份不同,则添加一级标题
if ($year != $prev_year) {
if ($prev_year != '') {
$output .= '';
}
$output .= '<h2>' . $year . '年</h2>';
}
// 如果月份不同,则添加二级标题
if ($month != $prev_month) {
if ($prev_month != '') {
$output .= '';
}
$output .= '<h3>' . $month . '月</h3>';
}
// 添加文章列表
foreach ($posts as $post) {
$output .= '<li><a href="https://www.xrbk.cn/1119.html' . get_permalink($post->ID) . '">' . $post->post_title . '</a></li>';
}
// 更新年份和月份
$prev_year = $year;
$prev_month = $month;
}
// 添加最后一个二级标题和一级标题的闭合标签
if ($prev_month != '') {
$output .= '';
}
if ($prev_year != '') {
$output .= '';
}
// 返回输出字符串
return $output;
}
add_shortcode('wp_archives', 'wp_post_list_shortcode');
短代码:[wp_archives]
阅读剩余
THE END