描述
另见
参数
- $args
-
(string|array) (可选) 默认存档链接参数,可选的
- 'type'
(string) 要检索的存档类型,接受:'daily'、'weekly'、'monthly'、'yearly'、'postbypost' 或 'alpha'。'postbypost' 和 'alpha' 都同样显示存档链接列表以及文章标题,而不是显示日期。两者之间的区别是:'alpha' 将按文章标题排序,而 'postbypost' 将按文章日期排序。默认为 'monthly' - 'limit'
(string|int) 要限制查询的链接数量,默认为空 (无限制) - 'format'
(string) 使用 $before 和 $after 参数来确定每个链接的格式,接受:'link' (<link>
标签)、'option' (<option>
标签)、'html' (<li>
标签) 或自定义格式,生成一个链接,$before在前,$after在后,默认为 'html' - 'before'
(string) 在每个链接的开头添加标记。 - 'after'
(string) 标记附加到每个链接的末尾。 - 'show_post_count'
(bool) 是否在链接旁边显示文章数量,默认 false - 'echo'
(bool|int) 输出或者返回链接列表,默认 1|true 输出 - 'order'
(string) 是否使用升序或降序,接受:'ASC' 或 'DESC',默认 'DESC' - 'post_type'
(string) 文章类型,默认 'post' - 'year'
(string) 年份,默认当前年份 - 'monthnum'
(string) 月份数,默认当前月份 - 'day'
(string) 日,默认当前日 - 'w'
(string) 周,默认当前周
默认值: ''
- 'type'
返回
(void|string) 如果'echo'参数为true,则无返回;如果'echo'为false,则为存档链接。
源码
更新日志
版本 | 描述 |
---|---|
5.2.0 | 添加了$year 、$monthnum 、$day 和$w 参数 |
4.4.0 | 添加了$post_type 参数 |
1.2.0 | 开始引入 |
使用示例
显示最近两周每日档案的链接列表
列出过去14天中至少有一篇文章的链接,每天的总计数在括号中,例如“2015年11月2日(3)”。<?php wp_get_archives( array( 'type' => 'daily', 'limit' => 14, 'show_post_count' => 'true' ) ); ?>
下拉框
在选项标签中显示每月存档的下拉菜单,带有日志计数(使用JavaScript导航到所选存档页面)。<select name="archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;"> <option value=""><?php esc_attr( _e( 'Select Month', 'textdomain' ) ); ?></option> <?php wp_get_archives( array( 'type' => 'monthly', 'format' => 'option', 'show_post_count' => 1 ) ); ?> </select>
为了过滤特定的类别/term,我们有一个特定的案例来添加过滤器。如果我们希望根据get_query_var(‘news_category’)更改存档链接,它就可以工作。
例如,在同一个模板上,我们有:
– News Category #1 has dropdown of 2019, 2018, 2017.
– News Category #2 has dropdown of 2017.如果用户访问/news/news-category-2/2019,则不会返回文章。如果当前类别是新闻类别,我们应该禁用2018年和2019年的存档链接。
下面的代码用于分类“news_category”和自定义文章类型“news”。要使用默认文章,您应该更改回分类法“category”和默认文章“post”类型。
在 templates/custom-archive-template.php
add_filter( 'getarchives_where', 'custom_archive_by_category_where' ); add_filter( 'getarchives_join', 'custom_archive_by_category_join' ); $args = array(); wp_get_archives( array( 'type' => 'yearly', 'format' => 'option', 'post_type' => 'news', ) ); remove_filter( 'getarchives_where', 'custom_archive_by_category_where' ); remove_filter( 'getarchives_join', 'custom_archive_by_category_join' );
在 functions.php:
add_filter( 'getarchives_where', 'custom_archive_by_category_where' ); add_filter( 'getarchives_join', 'custom_archive_by_category_join' ); $args = array(); wp_get_archives( array( 'type' => 'yearly', 'format' => 'option', 'post_type' => 'news', ) ); remove_filter( 'getarchives_where', 'custom_archive_by_category_where' ); remove_filter( 'getarchives_join', 'custom_archive_by_category_join' );
了解更多关于getarchives_where和getarchives_join 钩子
要返回仅包含名称和值的年份数组,请执行以下操作:
array( array( 'name' => 'January 2020', 'value' => 'http://demo.com/2020/01/' ), array( 'name' => 'February 2020', 'value' => 'http://demo.com/2020/02/' ) )
我们必须使用
echo=false&format=custom
:function theme_name_get_year_archive_array() { $years = array(); $years_args = array( 'type' => 'monthly', 'format' => 'custom', // My advise: WordPress Core shoud be add support "format=array" to keep it easy to catch for many custom cases 'before' => '', 'after' => '|', 'echo' => false, 'post_type' => 'news', 'order' => 'ASC' ); // Get Years $years_content = wp_get_archives($years_args); if (!empty($years_content) ) { $years_arr = explode('|', $years_content); $years_arr = array_filter($years_arr, function($item) { return trim($item) !== ''; }); // Remove empty whitespace item from array foreach($years_arr as $year_item) { $year_row = trim($year_item); preg_match('/href=["']?([^"'>]+)["']>(.+)</a>/', $year_row, $year_vars); if (!empty($year_vars)) { $years[] = array( 'name' => $year_vars[2], // Ex: January 2020 'value' => $year_vars[1] // Ex: http://demo.com/2020/01/ ); } } } return $years; }
默认用法
<?php $args = array( 'type' => 'monthly', 'limit' => '', 'format' => 'html', 'before' => '', 'after' => '', 'show_post_count' => false, 'echo' => 1, 'order' => 'DESC' ); wp_get_archives( $args ); ?>
显示过去12个月档案的链接列表
<?php wp_get_archives( array( 'type' => 'monthly', 'limit' => 12 ) ); ?>
显示最后20篇文章的标题
使用custom
作为format
参数的值,并指定before
和after
值(因此,在本例中,打印标题在span标签内,并用逗号分隔):<?php wp_get_archives( array( 'type' => 'postbypost', 'limit' => 20, 'format' => 'custom', 'before' => '<span class="my-post-title">', 'after' => '</span>, ' ) ); ?>
显示所有文章的链接标题,按字母顺序排列
可能在网站地图上使用。<?php wp_get_archives( 'type=alpha' ); ?>
在存档中的每个链接项上使用自定义包装的示例。如果你正在做需要更复杂结构的特殊造型,这会很有帮助。
<?php $args = array( 'type' => 'monthly', 'limit' => '', 'format' => 'custom', 'before' => '<div class="sub-item">', 'after' => '</div>', 'show_post_count' => false, 'echo' => 1, 'order' => 'DESC' ); wp_get_archives( $args ); ?>