jak uzyskać identyfikator strony za pomocą ślimaka strony


35

Jestem całkiem nowy w wordpress i zastanawiałem się, czy mogę to page idz tym zrobić slug. Czy to możliwe, proszę dać mi znać.

Odpowiedzi:


47

Użyj get_page_by_path($page_path):

$page = get_page_by_path( 'about' );
echo get_the_title( $page );

Zwróci to zwykły obiekt postu.


Co jeśli chcę, aby był to identyfikator strony podrzędnej?
zakręcony

1
@ dziwaczny Ta funkcja pobiera informacje o treści, a nie o treści macierzystej. Ponieważ ślimaki są wyjątkowe, zawsze otrzymasz tylko jedną stronę.
fuxia

3
Dziękuję, że działa i na stronie podrzędnej musiałem nawigować jak hity$page = get_page_by_path( 'about/child' );
zakręcony

Tylko dla wyjaśnienia, get_page_by_pathużywa post_namepola wewnętrznie, a nie post_slug.
colefner,

Żeby było jasne, używa to ścieżki strony, a nie nazwy strony, prawda? Zatem strona o nazwie „O nas” argumentem powinna być „o nas”, prawda? bez początkowych lub końcowych ukośników?
user658182

16

Korzystałem z tego ..

function get_id_by_slug($page_slug) {
    $page = get_page_by_path($page_slug);
    if ($page) {
        return $page->ID;
    } else {
        return null;
    }
} 

Mam nadzieję, że to komuś pomoże.


Po co owijać w funkcję? get_page_by_pathzwraca już zero…
GDY

Ponieważ pytanie OP chce zwrócić identyfikator, a nie obiekt strony.
user1158023

9

To pytanie zostało już zadane i udzielono odpowiedzi na tym forum. Wklejam stamtąd ten sam kod. Użyj tej funkcji, aby pobrać identyfikator strony.

 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

Miałem problemy z wybraną odpowiedzią, gdy próbowałem użyć kodu kilka razy na tej samej stronie. Za każdym razem wyświetlał wszystkie moje strony w tym samym czasie. Więc wróciłem do myślenia i wymyśliłem to prostsze podejście oparte na dokumentacji Kodeksu WordPress :

<?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();
?>

Może nadal może być pomocny dla kogoś tam; 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;
    }
}
?>

Mam nadzieję, że ta sugestia będzie dla kogoś pomocna.


0

Wiele odpowiedzi tutaj wydaje się zbyt skomplikowanych lub nie opisuje, w jaki sposób uzyskać konkretny identyfikator strony.

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

W powyższym opisie przypisaliśmy obiekt postu do strony $ - Gdy już masz obiekt posta, możesz uzyskać dowolne informacje opisane tutaj: https://codex.wordpress.org/Class_Reference/WP_Post

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

i dużo więcej

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.