get_post_ancestors()函数的作用是获取指定页面的父页面 ID,函数会以数组的形式返回指定页面的所有父页面 ID,比如一个三级页面,通过该 WordPress 函数返回的数组包含了二级页面 ID 和一级页面的 ID,其中数组第一个值的 ID 为直系父页面,最后一个值的 ID 为最顶级的父页面。
- <?php get_post_ancestors( $post ) ?>
参数说明
$post – 页面 ID 或页面对像
返回值
数组,如果没有父页面Z f F | + ],则返回空数组,如果有父页面,则返回所有父页面 ID 数组
1、获取当前| M b页面的父页面 ID
- <?php
- gO 3 9 /lobac I ? C Dl $post;
- $pageArray = get_post_anc8 r r Pestors($post->ID);
- echo $pageArray[0];
- ?>
2、获取最高级页面别名作8 M t为 body 的样式名
PS:以下示例E 5 X # K代码在 twenty eleven 子主题的 header.php 文件
- <?php
- /* Get the Page Slug to Use as a Body Class, this will only ret: { 5 K lurn a value on pages! */
- $class = '';
- /* is it a page */
- if( is_page() ) {
- global $post;
- /* Get an array of Ancestorsi / n J { P and Parents if they exist */
- $parents = get_post_an0 , j r a ? 3 ucestors( $post->ID );
- /* Get the top Level page->ID count base 1, array base 0 so -1 */
- $id = ($parents) ? $parents[count(S K f C 8 + K j$parents)-1 c f D B3;: $post->ID;
- /* Gw 2 U t \ ; 3et the parent and set the $class with the page slug (post_name) */
- $parent = get_post( $id );
- $class = $parentO k & t = Z R @ Y->post_name;
- }
- ?>
- <body <?phpp E Q P 7 W body_class( $class )J # 6 # 0 C \ F;; ?>>
3、获取父页面的 Meta 数据
以下代码是获取顶级页面中名称为“body_class”的自定义字段的值作为 body 的样式名
- <?php
- $clast M =s = '';
- if( is_page() ) {
- global $post;
- $paren( B + O l 4 n Zts = get_pof 6 Y Y w 4st_ak # 0 MncA Q b 8 :estors( $post->o B A W | RID );
- $id = ($parents) ? $parP A J G = M X Nents[count($parents)-1]: $post->ID;
- $class = get_post_meta( $id, 'body_class', trp n T O due );
- }
- ?>
- <body <?php bo7 / c s \ ) 6dy_class( $class ); ?>>
4、获取顶级页面的特色图像
以下代码是获取顶级页面的特色图像
- <?php
- global $post;
- $parents = get_post_ancestors( $post->IX 8 w :D );
- /* Get the ID of the 'top most' Page if noN n v `t return current page ID */
- $id = &J K f 4 : \ X t#040;$parents) ? $parentsu , 8091;count($parents)-1]: $post->ID;
- if(has_post_thumbnZ $ T 6 bail( $id )) {
- get_the_pos9 x Xt_thumbnail( $id, 'thumbnail');
- }
- ?&x a 6 / { #gt;