首页 > CMS > Wordpress > 正文

WordPress获取当前页面下所有子页面列表(含缩略图)的方法

2024-09-07 00:49:48
字体:
来源:转载
供稿:网友
这篇文章主要为大家详细介绍了WordPress获取当前页面下所有子页面列表(含缩略图)的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。

在页面模板的制作中,很多时候会在侧边栏调用当前页面的子页面名字和链接。如用于展示教程的页面模板,需要调用当前Page页面的page子页面标题、内容、链接、特色图像等内容,可以通过get_pages函数获取所属子页面信息,然后使用foreach循环输出。

WordPress获取当前页面下所有子页面列表(含缩略图)的方法

get_pages函数

说明:get_pages( )函数用于获取博客中已定义页面的列表。下面是它的典型用法。

用法:  <?php get_pages('arguments'); ?>

get_pages获取子页面例子

<?php        $pages = get_pages('child_of='.$post->ID.'&amp;sort_column=post_date&amp;sort_order=desc&amp;parent='.$post->ID);        foreach($pages as $page){                $content = $page->post_content;?>        <div>                特色图像:<?php echo get_the_post_thumbnail($page->ID); ?>                输出标题:<?php echo $page->post_title; ?>                输出内容:<?php echo $content; ?>                输出链接<a href="<?php echo get_page_link($page->ID); ?>">阅读全文</a>        </div><?php } ?>

这里的特色图像输出的为整个img标签,不能输出纯图片地址,下面的例子则是可以输出纯图片地址:

<?php      $pages = get_pages('child_of='.$post->ID.'&amp;sort_column=post_date&amp;sort_order=desc&amp;parent='.$post->ID);      $post_thumbnail_id = get_post_thumbnail_id($post->ID);      foreach($pages as $page){      $content = $page->post_content;      ?>      <div class="col-12 col-sm-6 col-md-4 col-lg-3">      <div class="zhuanti-tile">      <div class="zhuanti-tile__wrap">      <div class="background-img lazyload" data-bg="<?php echo get_the_post_thumbnail_url($page->ID); ?>">      </div>      <div class="zhuanti-tile__inner">      <div class="zhuanti-tile__text inverse-text">      <a class="zhuanti-tile__name cat-theme-bg" href="<?php echo get_page_link($page->ID); ?>"><?php echo $page->post_title; ?></a>      </div>    </div>    </div>      </div>      </div><?php } ?>

参数说明

sort_column (字符)按不同方式对页面列表进行排序。默认设置成按页面标题的字母顺序排序。'post_title' —— 按页面标题的字母顺序排序——默认

'menu_order' —— 按页面顺序(Page Order)进行排序。注意页面顺序和页面编号的区别。页面编号是由WordPress为每篇文章或页面设定的独有的数字,而页面顺序则由用户在管理栏的Write>Pages中设置。

'post_date' —— 按页面创建日期排序。

'post_modified' —— 按最后修改时间进行排序。

'ID' —— 按页面序列编号排序。

'post_author' —— 按页面创建者的序列编号排序。

'post_name' —— 按页面缩略名的字母顺序排序。

sort_order (字符) 更改页面列表的排列顺序(升序或降序)。默认为升序。可能的值为:'asc' ——按从低到高顺序排列(默认);'desc' —— 按从高到低顺序排列

exclude (字符) 定义一列页面编号并用逗号隔开,将其从已有列表中删除(例如:'exclude=3,7,1')。无默认值。

include (字符) 仅包含get_pages生成的特定页面列表。include参数与exclude同样用逗号将页面编号隔开。无默认值。

child_of (整数) 仅显示单个页面的子页面;值为默认编号。默认值为0(显示所有页面)。注意child_of参数不仅获取直系子页面,也会从已知编号中获取“孙页面”。0 ——默认,不限制子页面

parent (整数) 显示以该整数为父级的页面。默认值为-1(显示所有页面)。注意这可限制child_of参数的“深度”,因此只能检索到下一级页面。-1 ——默认,不限制父页面

exclude_tree (整数) 与'child_of'相反,'exclude_tree'从结果中移除已知编号的所有子页面。也可用于隐藏已知页面的所有子页面。该参数还可联合'child_of' 的值以隐藏孙页面。在2.7版本中该参数可用。

hierarchical(布尔型)在上级页面列表下以缩进方式显示下级页面。默认值为true(在父级列表项下显示其子页面)。可能的值有:1(true默认; 0(false)

meta_key(字符)仅包含含有该自定义字段关键字的页面(与meta_value字段联合使用)。

meta_value(字符)仅包含含有该自定义字段值的页面(与meta_key字段联合使用)。

authors(字符)仅包含给定作者所写的文章。返回一个数组,数组中包含所有与请求匹配的页面。

get_page_children()函数

通过页面id获取所有子页面;

用法:

<?php get_page_children( $page_id, $pages ) ?>

wp_list_pages()函数

wp_list_pages( )将WordPress页面作为链接显示出来。该模板标签常用于自定义侧边栏或标题,也常用于其他模板中。该模板标签在WordPress 1.5及更新版本中可用。

用法:

<?php wp_list_pages('arguments'); ?>

默认参数设置为: $defaults = array( 

'depth' => 0, 显示所有页面和子页面(无深度限制)

'show_date' => '', 不显示创建日期

'date_format' => get_option('date_format'),

'child_of' => 0, 子页面无限制

'exclude' => '', 不删除任何页面

'title_li' => __('Pages'), 页面列表的标题为“Pages(页面)”

'echo' => 1, 回显(显示)结果

'authors' => '', 不局限于特定作者

'sort_column' => 'menu_order, post_title', 先按页面顺序再按页面标题排序

'link_before' => '',

'link_after' => '',

'exclude_tree'=> '' );不删除父级/子级树

隐藏或改变列表标题

//给title_li参数传递一个零值或空值,可以隐藏由wp_list_pages生成的页面列表默认标题。<ul><?php wp_list_pages('title_li='); ?></ul> //在下面这个例子中,列表中只包含编号为9,5,23的页面,标题内容被改为“Poetry”,格式为< h2 >: <ul><?php wp_list_pages('include=5,9,23&amp;title_li=<h2>' . __('Poetry') . '</h2>' ); ?></ul> //用exclude参数可隐藏列表中由wp_list_pages生成的若干页面。 <ul><?php wp_list_pages('exclude=17,38' ); ?></ul>

页面按条件排列

//下面的例子将页面按管理栏中 Write > Page 定义的页面顺序进行排列。 <ul><?php wp_list_pages('sort_column=menu_order'); ?></ul //如果希望将列表按页面顺序进行排列并将“Prose”作为列表标题(以h2格式)显示在侧边栏中,可将以下代码添加到sidebar.php文件中: <ul><?php wp_list_pages('sort_column=menu_order&amp;title_li=<h2>' . __('Prose') . '</h2>' ); ?></ul> //使用下列代码段,可显示出无标题并以页面顺序排列的页面:  <ul><?php wp_list_pages('sort_column=menu_order&amp;title_li='); ?></ul> //下列代码显示出的页面将按发表日期进行排列,在页面列表项旁显示日期。 <ul><?php wp_list_pages('sort_column=post_date&amp;show_date=created'); ?></ul>

显示列表页面

//若仅希望在列表中显示特定页面,例如编号为35,7,26和13的页面,可使用include参数。 <ul><?php wp_list_pages('include=7,13,26,35&amp;title_li=<h2>' . __('Pages') . '</h2>' ); ?></ul> //显示子页面 //注意:即使没有子页面,HTML标签也是必要的(ul或ol)。用css设置列表时需要将这一点谨记在心。 <ul><?phpwp_list_pages('title_li=&amp;child_of='.$post->ID.'&amp;show_date=modified&amp;date_format=$date_format'); ?></ul> //以下代码仅在目前页面有子页面(将目前页面设为父级页面的页面)的情况下生成列表: <?php$children = wp_list_pages('title_li=&amp;child_of='.$post->ID.'&amp;echo=0');if ($children) { ?><ul><?php echo $children; ?></ul><?php } ?> //将本代码放在侧边栏的widget区块后,代码将无法运行。  <?phpif($post->post_parent)$children = wp_list_pages("title_li=&amp;child_of=".$post->post_parent."&amp;echo=0");else$children = wp_list_pages("title_li=&amp;child_of=".$post->ID."&amp;echo=0");if ($children) { ?><ul><?php echo $children; ?></ul><?php } ?> //本代码也可用在sidebar.php中,仅显示顶级页面。但浏览到包含子页面的页面时,仅显示其子页面。//浏览主页时在侧边栏显示所有顶级页面//浏览没有子页面的顶级页面时,显示所有顶级页面//浏览有子页面的顶级页面时,显示所有子页面及下一级页面//浏览子页面时,显示其父级页面下的所有子页面和下一级页面 <?php$output = wp_list_pages('echo=0&amp;depth=1&amp;title_li=<h2>Top Level Pages </h2>' );if (is_page( )) {$page = $post->ID;if ($post->post_parent) {      $page = $post->post_parent;}$children=wp_list_pages( 'echo=0&amp;child_of=' . $page . '&amp;title_li=' );if ($children) {      $output = wp_list_pages ('echo=0&amp;child_of=' . $page . '&amp;title_li=<h2>Child Pages</h2>');}}echo $output;?>
以上就是WordPress获取当前页面下所有子页面列表(含缩略图)的方法的全部内容,希望对大家的学习和解决疑问有所帮助,也希望大家多多支持武林网。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表