如何使用页面插件获取页面的页面ID


35

我对wordpress来说还很陌生,我想知道是否可以page id使用它slug。请让我知道。

Answers:


47

用途get_page_by_path($page_path)

$page = get_page_by_path( 'about' );
echo get_the_title( $page );

这将返回一个常规的post对象。


如果我想要的是子页面的ID,该怎么办?
怪异的

1
@freaky该函数仅接收页面信息,而不接收父信息。由于是唯一的,所以您始终只会得到一页。
fuxia

3
谢谢您的工作,并且对于子页面,我不得不像点击一样进行导航$page = get_page_by_path( 'about/child' );
怪异的

只是为了澄清起见,内部没有get_page_by_path使用该post_name字段post_slug
colefner '18

为了清楚起见,这使用页面路径而不是页面名称,对吗?然后一个名为“关于我们”的页面的参数应为“ about-us”,对吗?没有开头或结尾的斜杠?
user658182

16

我一直在用这个..

function get_id_by_slug($page_slug) {
    $page = get_page_by_path($page_slug);
    if ($page) {
        return $page->ID;
    } else {
        return null;
    }
} 

希望这会帮助某人。


为什么将其包装在函数中?get_page_by_path已经返回null…
GDY

因为OP问题要返回ID,而不是页面对象。
user1158023

9

在此论坛上已经有人问过并回答过。我从那里粘贴相同的代码。使用此功能检索页面ID。

 function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) { 
  global $wpdb; 
   $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) ); 
     if ( $page ) 
        return get_post($page, $output); 
    return null; 
  }

3

尝试在同一页面中多次使用代码时,选择的答案出现问题。在每种情况下,它都会同时显示我所有页面的内容。因此,我重新思考并根据WordPress Codex的文档提出了一种更简单的方法:

<?php $query = new WP_Query( array( 'pagename' => 'about-me' ) );
        while ( $query->have_posts() ) {
        $query->the_post();
        echo '<h2>'. get_the_title() .'</h2>';
        the_content();
    }
    wp_reset_postdata();
?>

也许它仍然对外面的人有帮助; D


0
<?php  function get_page_ID_by_slug( $slug ) {
    $page = get_page_by_path( $slug );
    if ( $page ) {
        return (int) $page->ID;
    }
    else {
        return null;
    }
}
?>

我希望这个建议对某人有帮助。


0

这里有很多答案似乎过于复杂,或者没有具体说明如何获取页面ID。

            $page = get_page_by_path("your-page-slug");
            if ($page) {
                $page_id =  $page->ID;
                echo $page_id;
            }

在上面的描述中,我们已将post对象分配给$ page-一旦拥有post对象,您就可以获取此处描述的任何信息:https : //codex.wordpress.org/Class_Reference/WP_Post

            $page->ID
            $page->post_status
            $page->post_title

还有更多

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.