wordpress获取指定页面ID的父页面函数get_post_ancestors

admin123 2019-5-15 3948

wordpress获取指定页面ID的父页面函数get_post_ancestors。

get_post_ancestors()函数的作用是获取指定页面的父页面ID,函数会以数组的形式返回指定页面的所有父页面ID,比如一个三级页面,通过该wordpress函数返回的数组包含了二级页面ID和一级页面的ID,其中数组第一个值的ID为直系父页面,最后一个值的ID为最顶级的父页面。

最新回复 (5)
全部楼主
  • admin123 2019-5-15
    0 2

    函数结构

    <?php get_post_ancestors( $post ) ?>
    参数说明

    $post – 页面ID或页面对像

    返回值

    数组,如果没有父页面,则返回空数组,如果有父页面,则返回所有父页面ID数组


  • admin123 2019-5-15
    0 3

    示例

    1、获取当前页面的父页面ID

    <?php 
    global $post;
    $pageArray = get_post_ancestors($post->ID);
    echo $pageArray[0];
    ?>


  • admin123 2019-5-15
    0 4

    2、获取最高级页面别名作为body的样式名

    PS:以下示例代码在twenty eleven子主题的header.php文件

    </head>
     
    <?php
    /* Get the Page Slug to Use as a Body Class, this will only return a value on pages! */
    $class = '';
    /* is it a page */
    if( is_page() ) { 
    global $post;
            /* Get an array of Ancestors and Parents if they exist */
    $parents = get_post_ancestors( $post->ID );
            /* Get the top Level page->ID count base 1, array base 0 so -1 */ 
    $id = ($parents) ? $parents[count($parents)-1]: $post->ID;
    /* Get the parent and set the $class with the page slug (post_name) */
            $parent = get_post( $id );
    $class = $parent->post_name;
    }
    ?>
     
    <body <?php body_class( $class ); ?>>


  • admin123 2019-5-15
    0 5

    3、获取父页面的Meta数据

    以下代码是获取顶级页面中名称为“body_class”的自定义字段的值作为body的样式名

    </head>
     
    <?php
    $class = '';
    if( is_page() ) {
    global $post;
    $parents = get_post_ancestors( $post->ID );
    $id = ($parents) ? $parents[count($parents)-1]: $post->ID;
    $class = get_post_meta( $id, 'body_class', true );
    }
    ?>
     
    <body <?php body_class( $class ); ?>>


  • admin123 2019-5-15
    0 6

    4、获取顶级页面的特色图像

    以下代码是获取顶级页面的特色图像

    <?php
    global $post;
    $parents = get_post_ancestors( $post->ID );
    /* Get the ID of the 'top most' Page if not return current page ID */
    $id = ($parents) ? $parents[count($parents)-1]: $post->ID;
    if(has_post_thumbnail( $id )) {
    get_the_post_thumbnail( $id, 'thumbnail');
    }
    ?>

    函数位置:wp-includes/post.php


返回