回答:
使用get_page_by_path($page_path)
:
$page = get_page_by_path( 'about' );
echo get_the_title( $page );
これにより、通常の投稿オブジェクトが返されます。
$page = get_page_by_path( 'about/child' );
get_page_by_path
ではpost_name
なく内部的にフィールドを使用しますpost_slug
。
私はこれを使用しています..
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を返しています…
このフォーラムで既に質問され、回答されています。そこから同じコードを貼り付けています。この関数を使用して、ページ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;
}
同じページでコードを数回使用しようとしたときに、選択した回答に問題がありました。すべてのインスタンスですべてのページコンテンツを同時に表示し続けました。そこで私は考えに戻り、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
ここでの回答は非常に複雑に思えるか、ページIDを具体的に取得する方法を説明していません。
$page = get_page_by_path("your-page-slug");
if ($page) {
$page_id = $page->ID;
echo $page_id;
}
上記の説明では、投稿オブジェクトを$ pageに割り当てました-投稿オブジェクトを取得したら、ここで説明する情報のいずれかを取得できます:https : //codex.wordpress.org/Class_Reference/WP_Post
$page->ID
$page->post_status
$page->post_title
などなど