cómo obtener la identificación de página de una página usando slug

35

Im bastante nuevo en wordpress y me preguntaba si podría conseguir una page idcon su slug. ¿Es posible por favor hágamelo saber?

raro
fuente

Respuestas:

47

Uso get_page_by_path($page_path):

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

Esto devolverá un objeto de publicación regular.

fuxia
fuente
¿Qué pasa si quiero una identificación de página secundaria?
extraño
1
@freaky La función toma solo la babosa de la página, no la babosa principal. Como las babosas son únicas, siempre obtendrá una sola página.
fuxia
3
Gracias, está funcionando y para la página infantil tuve que navegar como éxitos$page = get_page_by_path( 'about/child' );
extraño
Solo para aclarar, get_page_by_pathusa el post_namecampo internamente, no post_slug.
colefner
Para ser claros, esto usa la ruta de la página y no el nombre de la página, ¿correcto? Entonces, una página llamada "Acerca de nosotros" el argumento debería ser "acerca de nosotros", ¿correcto? sin barras iniciales o finales?
usuario658182
16

He estado usando esto ...

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

Espero que esto ayude a alguien.

Ibnul Hasan
fuente
¿Por qué envolverlo en una función? get_page_by_pathya devuelve nulo ...
GDY
Debido a que la pregunta OP quiere devolver ID, no el objeto de la página.
user1158023
9

Ya se ha preguntado y respondido en este foro. Estoy pegando el mismo código desde allí. Use esta función para recuperar la identificación de la página.

 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; 
  }
Vikas Bhardwaj
fuente
3

Tuve problemas con la respuesta elegida al intentar usar el código varias veces en la misma página. Seguía mostrando todo el contenido de mis páginas al mismo tiempo en cada instancia. Así que volví a pensar y se me ocurrió este enfoque más simple basado en la documentación de 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();
?>

Tal vez aún pueda ser útil para alguien por ahí; D

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

Espero que esta sugerencia sea útil para alguien.

Dipika
fuente
0

Aquí hay muchas respuestas que parecen demasiado complejas o que no describen cómo obtener la ID de la página específicamente.

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

En la descripción anterior, hemos asignado el objeto de publicación a $ page: una vez que tenga el objeto de publicación, puede obtener la información que se describe aquí: https://codex.wordpress.org/Class_Reference/WP_Post

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

y mucho más

dbmpls
fuente