全球主机交流论坛

标题: WordPress中的存档如何DIY呢? [打印本页]

作者: 唐王李世民    时间: 2024-2-27 14:09
标题: WordPress中的存档如何DIY呢?
本帖最后由 唐王李世民 于 2024-2-29 13:36 编辑

我有一个wordpress博客,主题里的存档显示得太长了,我想自己动手修改一个,只显示当前年的就可以了,其他的隐藏了。

但是不知道要在哪个文件中修改,应该如何修改呢?谢谢各位大佬了。

我使用的是默认的 twentyten主题,以下是主题文件,可以麻烦大佬们帮忙看一看吗?谢谢了

twentyten.4.0.zip: https://url03.ctfile.com/f/32194203-1026761375-d5f9f9?p=2196 (访问密码: 2196)



作者: sasha    时间: 2024-2-27 14:16
主题文件夹下的 archive
作者: sasha    时间: 2024-2-27 14:17
具体教程搜 wordpress archive customizer
中文 wordpress 自定义 存档页面
作者: 唐王李世民    时间: 2024-2-28 14:16
sasha 发表于 2024-2-27 14:17
具体教程搜 wordpress archive customizer
中文 wordpress 自定义 存档页面

我只想在现有主题里修改,并不是想新增,谢谢您了。
作者: sasha    时间: 2024-2-29 12:32
唐王李世民 发表于 2024-2-28 14:16
我只想在现有主题里修改,并不是想新增,谢谢您了。

就是改现有主题的archive
咋就转不过弯呢
作者: linhou    时间: 2024-2-29 13:01
是什么主题,直接改主题文件,如果有 filter,就不需要改主题,直接添加一个钩子函数。
作者: 唐王李世民    时间: 2024-2-29 13:40
linhou 发表于 2024-2-29 13:01
是什么主题,直接改主题文件,如果有 filter,就不需要改主题,直接添加一个钩子函数。 ...

我使用的是默认的twentyten主题,但是在主题里的archive文件内并没有相关的提取代码,在主题的sidebar.php文件中倒是发现了一个wp_get_archives( 'type=monthly' );的函数,但是我不知道应该怎么修改这个函数,谢谢您了,我一楼上传了主题包。
作者: 唐王李世民    时间: 2024-2-29 13:41
sasha 发表于 2024-2-29 12:32
就是改现有主题的archive
咋就转不过弯呢

谢谢您的回复了

我使用的是默认的twentyten主题,但是在主题里的archive文件内并没有相关的提取代码,在主题的sidebar.php文件中倒是发现了一个wp_get_archives( 'type=monthly' );的函数,但是我不知道应该怎么修改这个函数,谢谢您了,我一楼上传了主题包。
作者: GoHost    时间: 2024-2-29 14:13
节选了wp_get_archives内部的一段代码  参数中支持设定year
function wp_get_archives( $args = '' ) {
        global $wpdb, $wp_locale;

        $defaults = array(
                'type'            => 'monthly',
                'limit'           => '',
                'format'          => 'html',
                'before'          => '',
                'after'           => '',
                'show_post_count' => false,
                'echo'            => 1,
                'order'           => 'DESC',
                'post_type'       => 'post',
                'year'            => get_query_var( 'year' ),
                'monthnum'        => get_query_var( 'monthnum' ),
                'day'             => get_query_var( 'day' ),
                'w'               => get_query_var( 'w' ),
        );

查了下可能不是想要的效果  考虑通过getarchives_where函数实现吧:
https://wordpress.stackexchange. ... ith-wp-get-archives

作者: 唐王李世民    时间: 2024-2-29 14:18
GoHost 发表于 2024-2-29 14:13
节选了wp_get_archives内部的一段代码  参数中支持设定year
function wp_get_archives( $args = '' ) {
        gl ...

这些参数我不太明白其中的意思
作者: 唐王李世民    时间: 2024-2-29 14:19
GoHost 发表于 2024-2-29 14:13
节选了wp_get_archives内部的一段代码  参数中支持设定year
function wp_get_archives( $args = '' ) {
        gl ...
<?php wp_get_archives( array( 'type' => 'monthly', 'limit' => 36 ) ); ?>


像这条命令是只显示最近3年的吗?


作者: GoHost    时间: 2024-2-29 14:55
唐王李世民 发表于 2024-2-29 14:19
像这条命令是只显示最近3年的吗?

是的  最近36个月的
我找了下这个函数的资料
https://www.wp-diary.com/wp_get_archives.html
wp_get_archives调用实例:
1、以月归档方式显示十二个月的归档
按月份显示存档列表,只显示最后十二个月的文章。

<?php wp_get_archives( array( 'type' => 'monthly', 'limit' => 12 ) ); ?>

要不你试试用ChatGPT实现你的需求
作者: 唐王李世民    时间: 2024-2-29 15:19
GoHost 发表于 2024-2-29 14:55
是的  最近36个月的
我找了下这个函数的资料
https://www.wp-diary.com/wp_get_archives.html

我修改了sidebar.php里的 <?php wp_get_archives( 'type=monthly' ); ?> 这一行为 <?php wp_get_archives( array( 'type' => 'monthly', 'limit' => 12 ) ); ?>

没有效果。
作者: GoHost    时间: 2024-2-29 16:14
本帖最后由 GoHost 于 2024-2-29 16:21 编辑

要实现在WordPress网站上,使用twentyten 4.0主题时,归档列表仅显示当年的月份而不是所有历史月份,你可以通过修改主题的functions.php文件或创建一个子主题来自定义函数,以便更安全地进行更改。下面是一个步骤指南和代码示例:

创建子主题(推荐)

1. 创建子主题目录:在`wp-content/themes`目录下,创建一个新目录,例如`twentyten-child`。
2. 创建样式表:在`twentyten-child`目录中,创建一个`style.css`文件,添加以下内容:
  1. /*
  2.    Theme Name: Twenty Ten Child
  3.    Template: twentyten
  4.    */
  5.    @import url("../twentyten/style.css");
复制代码

3. 激活子主题:在WordPress后台的“外观 > 主题”中激活你的子主题。


修改functions.php

在你的子主题目录中,创建或编辑`functions.php`文件,然后添加以下代码:

  1. function filter_archives_by_current_year($where) {
  2.     $year = date('Y'); // 获取当前年份
  3.     $where .= " AND post_date >= '$year-01-01' AND post_date <= '$year-12-31'";
  4.     return $where;
  5. }
  6. add_filter('getarchives_where', 'filter_archives_by_current_year');
复制代码


这段代码通过`getarchives_where`过滤器修改了归档查询,使其仅返回当前年份的月份。

注意事项

●修改主题文件时,请确保备份原文件,以防出现问题。
●使用子主题可以确保在主题更新时,你的更改不会丢失。
●如果你不熟悉PHP或WordPress开发,请在进行更改前咨询专业人士。

通过上述步骤,你应该能够实现在WordPress网站上,归档列表仅显示当前年份的月份。
作者: 唐王李世民    时间: 2024-3-5 16:35
GoHost 发表于 2024-2-29 16:14
要实现在WordPress网站上,使用twentyten 4.0主题时,归档列表仅显示当年的月份而不是所有历史月份,你可以 ...

谢谢您的回复,我试试看
作者: GoHost    时间: 2024-3-6 17:11
唐王李世民 发表于 2024-3-5 16:35
谢谢您的回复,我试试看

不客气  希望能帮到你  如果还有问题欢迎发出来我们一起探讨




欢迎光临 全球主机交流论坛 (https://sunk.eu.org/) Powered by Discuz! X3.4