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?

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.


¿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.


¿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; 
  }

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


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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.