come ottenere l'id della pagina di una pagina usando la lumaca di pagina


35

Im abbastanza nuovo per wordpress e mi chiedevo se potessi ottenere una page idcon la sua slug. È possibile per favore fatemelo sapere.

Risposte:


47

Utilizzare get_page_by_path($page_path):

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

Questo restituirà un normale oggetto postale.


Cosa succede se è l'ID di una pagina figlio che voglio?
strano

1
@freaky La funzione accetta solo la lumaca della pagina, non la lumaca principale. Poiché le lumache sono uniche, otterrai sempre solo una pagina.
fuxia

3
Grazie sta funzionando e per la pagina del bambino ho dovuto navigare come hit$page = get_page_by_path( 'about/child' );
strano

Giusto per chiarire, get_page_by_pathusa il post_namecampo internamente, no post_slug.
Colefner,

Giusto per essere chiari, questo utilizza il percorso della pagina e non il nome della pagina, giusto? Quindi una pagina chiamata "Chi siamo" l'argomento dovrebbe essere "chi siamo", giusto? senza barre iniziali o finali?
user658182

16

Sto usando questo ..

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

Spero che questo possa aiutare qualcuno.


Perché avvolgerlo in una funzione? get_page_by_pathrestituisce già null ...
GDY

Perché la domanda OP vuole restituire l'ID, non l'oggetto della pagina.
user1158023

9

È già stato chiesto e risposto su questo forum. Sto incollando lo stesso codice da lì. Utilizzare questa funzione per recuperare l'ID della pagina.

 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

Ho avuto problemi con la risposta scelta durante il tentativo di utilizzare il codice più volte nella stessa pagina. Continuava a mostrare tutti i contenuti delle mie pagine contemporaneamente in ogni istanza. Quindi sono tornato a pensare e ho trovato questo approccio più semplice basato sulla documentazione del 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();
?>

Forse può ancora essere utile per qualcuno là fuori; 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;
    }
}
?>

Spero che questo suggerimento sia utile per qualcuno.


0

Molte risposte qui che sembrano eccessivamente complesse o che non descrivono come ottenere l'ID pagina in modo specifico.

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

Nella descrizione sopra abbiamo assegnato l'oggetto post a $ page - Una volta che hai l'oggetto post puoi ottenere una qualsiasi delle informazioni descritte qui: https://codex.wordpress.org/Class_Reference/WP_Post

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

e molto di più

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.