sayfa slug kullanarak bir sayfanın sayfa kimliği nasıl elde edilir


35

Wordpress için oldukça yeni ve page idbununla başa çıkıp çıkamayacağımı merak ediyordum slug. Bu mümkün mü lütfen bana bildirin.

Yanıtlar:


47

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.


Ya istediğim bir alt sayfanın kimliği ise?
garip

1
Freaky İşlev, ana öbek yerine değil, yalnızca sayfa öbekini alır. Sümüklü böcek benzersiz olduğundan, her zaman sadece bir sayfa alırsın.
fuxia

3
Teşekkürler, çalışıyor ve çocuk sayfası için, hit gibi gezinmek zorunda kaldım$page = get_page_by_path( 'about/child' );
acayip

Sadece netleştirmek get_page_by_pathiçin, post_namealanı dahili olarak kullanır , kullanmaz post_slug.
colefner

Sadece açık olması için bu sayfa yolunu kullanır, sayfa adını değil, doğru mu? Sonra "Hakkımızda" adlı bir sayfa argümanı "hakkımızda" olmalı, değil mi? başlangıcı veya sonda eğik çizgi olmadan?
user658182

16

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.


Neden bir fonksiyona sarılıyor? get_page_by_pathzaten null döndürür…
GDY

Çünkü OP sorusu sayfa nesnesini değil kimliğini döndürmek istiyor.
user1158023

9

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; 
  }

3

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


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

Umarım bu öneri birileri için yararlıdır.


0

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ı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.