限制子比主题侧边栏归档的行数

本文共有1570个字,阅读需要7分钟。

老郭喜欢在wordpress的侧边栏里添加一个“归档”栏目,这样可以使博客看上去更加的正规一点。不过子比主题和其他的wordpress主题一样,归档存在一个问题,就是随着时间的增加,归档栏目的行数也会不断的增加,久而久之,归档就会变得越来越长,影响博客的整体美观。

对于老郭这样有强迫症的人来说肯定是不能容忍的,于是就想着能不能有什么办法让归档只显示一定的行数,剩下的用”更多“来表示,并通过”更多“链接到另一个网页来显示所有的归档。

也许是对这个需求的人不多,网上关于解决这个问题的方法介绍并不多,没办法,老郭只能求助于AI了。但这又有一个问题,AI只能解答如何在wordpress中限制侧边栏归档行数的问题,而老郭使用的是子比主题,AI没有专门针对子比主题的解决方案,于是老郭只能在AI回答的基础上自己再琢磨。最后,老郭决定舍弃wordpress自带的归档功能,通过短代码的形式,在侧边栏里自建一个新的”归档“栏目。

第一步是在主题文件目录下的function.php文件里先自定义这个短代码,不过由于子比主题的function.php文件是通过引用func.php中的代码来实现功能的,目的是为了防止主题更新造成function.php文件被覆盖。

图片[1]-限制子比主题侧边栏归档的行数-老郭博客

那么就好办了,在新建的func.php文件中添加以下代码来自定义“custom_archives”这个短代码。其中,$limit = 24是需要显示的行数,老郭这里设置的是显示24个月的。

function custom_archives_list() {
    global $wpdb;

    // 获取最近 24 个月的归档
    $limit = 24;
    $query = "SELECT DISTINCT YEAR(post_date) AS year, MONTH(post_date) AS month, COUNT(ID) as posts 
              FROM $wpdb->posts 
              WHERE post_type = 'post' AND post_status = 'publish' 
              GROUP BY year, month 
              ORDER BY post_date DESC 
              LIMIT $limit";

    $archives = $wpdb->get_results($query);
    $output = '<ul>';

    // 生成归档列表,年份在前,月份在后
    foreach ($archives as $archive) {
        $url = get_month_link($archive->year, $archive->month);
        $month_padded = str_pad($archive->month, 2, '0', STR_PAD_LEFT);
        $text = sprintf('%d年 %s月', $archive->year, $month_padded);
        $output .= sprintf('<li><a href="%s">%s</a> (%d)</li>', esc_url($url), esc_html($text), $archive->posts);
    }

    // 添加 "更多" 链接
    $output .= '<li><a href="' . esc_url(home_url('/archives')) . '">更多……</a></li>';
    $output .= '</ul>';

    return $output;
}

add_shortcode('custom_archives', 'custom_archives_list');

第二步就是在侧边栏的合适位置添加一个文本,并在文本里添加这个自定义的短代码。

图片[2]-限制子比主题侧边栏归档的行数-老郭博客

第三步,为了让“更多”可以链接到正确的地方,还需要新建一个名为“archives”的页面。这个用子比主题就比较方便了,因为子比主题自带了“归档”模板。让新建的“archives”的页面保持空白,然后在右侧的模板里选择“Zibll—文章归档”即可。

图片[3]-限制子比主题侧边栏归档的行数-老郭博客
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享