come ottenere l'ID di una pagina utilizzando lo slug della pagina

13 giu 2013, 13:53:37
Visualizzazioni: 159K
Voti: 52

Sono abbastanza nuovo in WordPress e mi chiedevo se fosse possibile ottenere un page id utilizzando il suo slug. È possibile? Per favore fatemelo sapere.

0
Tutte le risposte alla domanda 7
6
76

Usa get_page_by_path($page_path):

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

Questo restituirà un normale oggetto post.
Documentazione:
https://developer.wordpress.org/reference/functions/get_page_by_path/
https://developer.wordpress.org/reference/functions/get_the_title/

13 giu 2013 13:57:54
Commenti

E se volessi l'ID di una pagina figlia?

freaky freaky
13 giu 2013 14:10:24

@freaky La funzione accetta solo lo slug della pagina, non lo slug del genitore. Dato che gli slug sono univoci, otterrai sempre una sola pagina.

fuxia fuxia
13 giu 2013 14:12:26

Grazie, funziona e per la pagina figlia ho dovuto navigare così $page = get_page_by_path( 'about/child' );

freaky freaky
13 giu 2013 14:15:38

Per chiarire, get_page_by_path utilizza internamente il campo post_name, non post_slug.

colefner colefner
9 apr 2018 22:04:07

Per essere chiari, questa funzione utilizza il percorso della pagina e non il nome della pagina, corretto? Quindi per una pagina chiamata "Chi siamo" l'argomento dovrebbe essere "chi-siamo", giusto? Senza barre all'inizio o alla fine?

user658182 user658182
25 lug 2018 19:01:46

Sì, @user658182

fuxia fuxia
25 lug 2018 21:57:30
Mostra i restanti 1 commenti
2
23

Ho utilizzato questa funzione..

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

Spero che possa essere utile a qualcuno.

13 mar 2015 13:38:53
Commenti

Perché racchiuderlo in una funzione? get_page_by_path restituisce già null …

GDY GDY
1 mar 2019 09:42:10

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

user1158023 user1158023
16 ott 2019 17:34:01
0
11

È già stato chiesto e risposto su questo forum. Incollo lo stesso codice da lì. Usa 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; 
  }
13 giu 2013 14:06:53
0

Esiste una funzione url_to_postid disponibile sin da WordPress v1.0.0 :) Questo compito è più semplice da realizzare utilizzando questa funzione.

url_to_postid

Quando la pagina è una pagina di primo livello, basta fornire solo lo slug.

Ad esempio: url_to_postid('slug');

Quando la pagina si trova in un livello gerarchico inferiore (cioè ha una pagina genitore), è necessario anteporre lo slug del genitore separato da una barra in questo modo:

url_to_postid('slug-genitore/slug-figlio');

Modifica: se questa funzione restituisce 0, dovresti rigenerare i permalink (apri la pagina dei permalink in amministrazione) - questa operazione è necessaria solo una volta

1 set 2020 00:05:35
0

Ho avuto problemi con la risposta scelta quando cercavo di utilizzare il codice più volte nella stessa pagina. Continuava a mostrare tutto il contenuto delle mie pagine contemporaneamente in ogni istanza. Quindi sono tornato a riflettere 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 a qualcuno là fuori ;D

8 ott 2016 18:20:51
0

Molte risposte qui sembrano eccessivamente complesse o non descrivono come ottenere specificamente l'ID della pagina.

            $page = get_page_by_path("il-tuo-slug-di-pagina");
            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 qualsiasi informazione descritta qui: https://codex.wordpress.org/Class_Reference/WP_Post

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

e molto altro ancora

6 apr 2019 00:47:07
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 possa essere utile a qualcuno.

31 mag 2018 13:18:08