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 /
#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;
}
}
?>
我希望这个建议对某人有帮助。
评论
如果我想要的是子页面的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