So erhalten Sie die Seiten-ID einer Seite mit dem Seiten-Slug


35

Ich bin ziemlich neu in WordPress und ich habe mich gefragt, ob ich eine page idmit ihm bekommen könnte slug. Ist es möglich, lass es mich wissen.

Antworten:


47

Verwendung get_page_by_path($page_path):

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

Dies gibt ein reguläres Post-Objekt zurück.


Was ist, wenn ich die ID einer untergeordneten Seite haben möchte?
Freaky

1
@freaky Die Funktion verwendet nur den Page Slug, nicht den Parent Slug. Da Schnecken einzigartig sind, erhalten Sie immer nur eine Seite.
Fuxia

3
Danke, es funktioniert und für die Kinderseite musste ich wie Hits navigieren$page = get_page_by_path( 'about/child' );
freaky

Nur zur Verdeutlichung get_page_by_pathwird das post_nameFeld intern nicht verwendet post_slug.
Colefner

Nur um klar zu sein, verwendet dies den Seitenpfad und nicht den Seitennamen, richtig? Dann sollte auf einer Seite mit dem Namen "Über uns" das Argument "Über uns" lauten, richtig? ohne Anfang oder abschließende Schrägstriche?
user658182

16

Ich habe das benutzt ..

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

Hoffe das wird jemandem helfen.


Warum es in eine Funktion einwickeln? get_page_by_pathgibt bereits null zurück…
GDY

Da die OP-Frage ID zurückgeben möchte, nicht das Seitenobjekt.
user1158023

9

Es wurde bereits in diesem Forum gefragt und beantwortet. Ich füge den gleichen Code von dort ein. Verwenden Sie diese Funktion, um die Seiten-ID abzurufen.

 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

Ich hatte Probleme mit der gewählten Antwort, als ich versuchte, den Code mehrmals auf derselben Seite zu verwenden. In jedem Fall wurden alle Inhalte meiner Seiten gleichzeitig angezeigt. Also habe ich wieder nachgedacht und mir diesen einfacheren Ansatz ausgedacht, der auf der Dokumentation des WordPress Codex basiert :

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

Vielleicht kann es immer noch für jemanden da draußen hilfreich sein; 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;
    }
}
?>

Ich hoffe, dieser Vorschlag ist für jemanden hilfreich.


0

Viele Antworten hier, die übermäßig komplex erscheinen oder nicht beschreiben, wie die Seiten-ID speziell abgerufen werden kann.

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

In der obigen Beschreibung haben wir $ page das Beitragsobjekt zugewiesen. Sobald Sie das Beitragsobjekt haben, können Sie eine der hier beschriebenen Informationen abrufen: https://codex.wordpress.org/Class_Reference/WP_Post

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

und vieles mehr

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.