WordPress页面列表标签:wp_list_pages

2022/07/13

WordPress模板标签wp_list_pages用于输出页面列表,通常用在导航或企业模板的侧边栏。

wp_list_pages( array|string $args = '' )

本文涉及的内容包括:

函数参数

$args

数组或字符串值

wp_list_pages()函数$args参数默认的值如下:

$args = array(
	'depth'			=> 0,
	'show_date'		=> '',
	'date_format'	=> get_option( 'date_format' ),
	'child_of'		=> 0,
	'exclude'		=> '',
	'title_li'		=> __( 'Pages' ),
	'echo'			=> 1,
	'authors'		=> '',
	'sort_column'	=> 'menu_order, post_title',
	'link_before'	=> '',
	'link_after'	=> '',
	'walker'		=> '',
);

wp_list_pages()函数$args参数可用的值如下:

child_of

整数型,默认值:0

指定一个页面ID,将输出该页面的子页面,不包含该页面。

authors

字符串值,默认为空

作者ID,多个ID用逗号分隔,只有指定的作者发表的页面才被显示,默认显示所有作者发表的页面。

date_format

字符串值,默认为后台常规设置中的日期格式

当show_date的值不为空时,也就是显示页面发表或修改日期,date_format指定该日期的格式

depth

整数型,默认值:0

  • 0:输出所有的页面和子页面,按层级的方式输出;
  • 1:只输出顶级页面,不包含任何子页面;
  • n:根据n的具体数字来显示相应等级的页面;
  • -1:输出所有的页面和子页面,不以层级的方式输出;

echo

布尔值,默认值:1

是否输出结果,如果为0,只返回结果而不输出。

exclude

字符串值,默认为空

要排除的页面ID,多个ID用逗号分隔。

include

字符串值,默认为空

要显示的页面ID,多个ID用逗号分隔,默认显示所有页面。

link_after

字符串值,默认为空

追加字符到链接锚文本的后面,即</a>的前面。

link_before

字符串值,默认为空

追加字符到链接锚文本的前面,即紧跟<a>标记。

post_type

字符串值,默认值:page

文章类型,暂时没有发现用处

post_status

字符串值,默认值:publish

按页面的状态来显示,默认只显示已发表的页面

  • publish:已发表的页面
  • trash:回收站中的页面
  • private:私密
  • auto-draft:自动草稿
  • draft:草稿

show_date

字符串值,默认为空

传递任意值将显示页面的发表日期,显示的日期格式由date_format决定。

  • modified:显示页面的修改日期
  • 任意值:显示页面的发表日期,例如:created

sort_column

字符串值,默认值:menu_order, post_title

指定页面列表的排序方式,多个值用逗号分隔

  • post_author:按作者排序
  • post_date:按发表日期排序
  • post_title:按页面标题排序
  • post_name:按页面别名排序
  • post_modified:按修改日期排序
  • post_modified_gmt:按修改日期排序,与上面的post_modified不同之处在于这里是格林时间
  • menu_order:按页面设置中的“排序”
  • post_parent:按父页面排序
  • ID:按页面ID排序
  • rand:随机排序
  • comment_count:按评论数量排序

sort_order

字符串值,默认值:ASC

页面列表的排序顺序

  • ASC:升序排列;
  • DESC:降序排列;

title_li

字符串值,默认值:Pages

提供一个字符串作为页面列表的标题,不需要标题可以传递一个空值。

walker

用于列表页的实例,默认为空,参考Walker_Page

函数使用示例

排除ID为4、23的页面,显示发表日期并按发表日期的降序排列

<ul>
    <?php 
		$args = array(
			'show_date' => 'created',
			'sort_column' => 'post_date',
			'sort_order'=> 'DESC',
			'exclude' => '4,23',
		);
		wp_list_pages($args);
	?> 
</ul>

下面的代码输出同样的结果:

<ul>
	<?php wp_list_pages('show_date=created&sort_column=post_date&sort_order=DESC&exclude=4,23'); ?> 
</ul>

一个比较有用的例子,如果当前页面为子页面,则输出它的兄弟页面,否则输出顶级页面:

<?php
	if( $post->post_parent ) {
		$pages = wp_list_pages( array(
			'title_li' => '',
			'child_of' => $post->post_parent,
			'echo'     => 0
		) );
	} else {
		$pages = wp_list_pages( array(
			'title_li' => '',
			'echo' => 0,
			'depth' => 1,
		) );
	}
?>
<ul>
	<?php echo $pages; ?>
</ul>

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注