Yanıtlar:
Kullanım get_page_by_path($page_path)
:
$page = get_page_by_path( 'about' );
echo get_the_title( $page );
Bu normal bir yazı nesnesi döndürür.
$page = get_page_by_path( 'about/child' );
get_page_by_path
için, post_name
alanı dahili olarak kullanır , kullanmaz post_slug
.
Bunu kullanıyorum ..
function get_id_by_slug($page_slug) {
$page = get_page_by_path($page_slug);
if ($page) {
return $page->ID;
} else {
return null;
}
}
Umarım bu birine yardımcı olur.
get_page_by_path
zaten null döndürür…
Bu forumda zaten sorulmuş ve cevaplandırılmıştır. Aynı kodu oradan yapıştırıyorum. Sayfa kimliğini almak için bu işlevi kullanın.
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;
}
Aynı sayfadaki kodu birkaç kez kullanmaya çalışırken seçilen cevap ile ilgili sorun yaşadım. Tüm sayfalarımın içeriğini her durumda aynı anda görüntülemeye devam etti. Böylece tekrar düşünmeye başladım ve WordPress Codex'in belgelerine dayanarak bu basit yaklaşımla geldim :
<?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();
?>
Belki oradaki biri için hala yardımcı olabilir; D
Burada aşırı karmaşık görünen ya da özellikle sayfa kimliğinin nasıl alınacağını açıklamayan birçok cevap var.
$page = get_page_by_path("your-page-slug");
if ($page) {
$page_id = $page->ID;
echo $page_id;
}
Yukarıdaki açıklamada, post nesnesini $ sayfasına atadık - Post nesnesini aldıktan sonra burada açıklanan bilgilerden herhangi birini alabilirsiniz: https://codex.wordpress.org/Class_Reference/WP_Post
$page->ID
$page->post_status
$page->post_title
ve çok daha fazlası