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

#1 楼

使用get_page_by_path($page_path)
$page = get_page_by_path( 'about' );
echo get_the_title( $page );

这将返回常规的发布对象.Documentation:https://developer.wordpress.org/reference/functions/get_page_by_path/ https://developer.wordpress.org/reference/函数/ get_the_title /

评论


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

–怪异
13年6月13日在11:10

@freaky该函数仅接收页面信息,而不接收父信息。由于是唯一的,因此您始终只能得到一页。

– fuxia♦
13年6月13日在11:12

谢谢你正在工作,对于子页面,我不得不像点击一样导航$ page = get_page_by_path('about / child');

–怪异
13年6月13日在11:15

为了澄清起见,get_page_by_path在内部使用了post_name字段,而不是post_slug。

– colefner
18年4月9日在19:04

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

–user658182
18年7月25日在16:01

#2 楼

我一直在使用它。.

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
19年3月1日在7:42

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

–user1158023
19-10-16在14:34

#3 楼

在此论坛上已经有人问过并回答过。我要从此处粘贴相同的代码。
使用此函数检索页面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; 
  }


#4 楼

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

br />

#5 楼

从WordPress v1.0.0开始有一个函数url_to_postid :)使用此函数最容易实现此任务。
url_to_postid
当页面是顶层页面时,只需要输入Slug。
例如url_to_postid('slug');
当页面处于较低的层次结构级别(即,它具有父级)时,您必须像这样将父级子段除以斜杠:
url_to_postid('parent-slug/child-slug');


#6 楼

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

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


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

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


更多

#7 楼

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


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