Obtener contenido de la página usando slug

9

Estoy tratando de obtener el contenido de la página cuando solo conozco la cadena de slug.

¿Hay una función para esto, o una manera fácil de hacerlo o es un caso de hacerlo a través de SQL?

Muchas gracias

Alex
fuente

Respuestas:

30

Uso get_posts()y el parámetro nameque es la babosa:

$page = get_posts( array( 'name' => 'your-slug' ) );

if ( $page )
{
    echo $page[0]->post_content;
}

Tenga en cuenta que el tipo de publicación está get_posts()predeterminado en 'post'. Si quieres una página usa ...

$page = get_posts(
    array(
        'name'      => 'your-slug',
        'post_type' => 'page'
    )
);

Si desea todos los tipos de publicaciones públicas (excepto los archivos adjuntos) establezca el argumento de tipo de publicación en 'any'. Entonces podría obtener más de un resultado porque las babosas no son únicas en los diferentes tipos de publicaciones.

fuxia
fuente
4

Puede obtener una página por su título utilizando la get_page_by_title()función.

Puede usarlo así (suponiendo que quiera mostrar el contenido):

$page = get_page_by_title('Your Title'); 
$content = apply_filters('the_content', $page->post_content);
echo $content;

Por cierto, para obtener la página usando slug:

function get_page_id_by_slug($slug){
    global $wpdb;
    $id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = '".$slug."'AND post_type = 'page'");
    return $id;
}

$page = get_post(get_page_id_by_slug('my-slug'));
Sisir
fuente
4

Si en la página con la babosa en cuestión

Lea sobre etiquetas condicionales :
is_page()también toma la babosa como argumento.

Por lo tanto,

if( is_page( 'your-slug' ) ) {
     // fetch content
}

Hará lo que quieras.

Si en otra página

Si está interesado en cómo obtener contenido de publicaciones / páginas basado en una babosa cuando no está en dicha página, también puede alimentar get_postsuna babosa. Esto no está documentado en el códice.

Lo siguiente buscará la identificación de una babosa:

$args = array(
    'name' => 'your-slug'
);
$posts_from_slug = get_posts( $args );

// echo fetched content
echo $posts_from_slug[0]->post_content;
Johannes Pille
fuente
2

Uso get_page_by_path.

Sintaxis

<?php get_page_by_path( $page_path, $output, $post_type ); ?>

Parámetros

Ejemplo:

//Returns the animal with the slug 'cat'
get_page_by_path('cat', OBJECT, 'animal');

para obtener más referencias, consulte la Referencia de funciones de WordPress

Utilizo este código al completar una plantilla de tema desde una página,

        $about = get_page_by_path('about'); 
        $content = apply_filters( 'the_content', $about->post_content ); 
        echo $content;
PlanetHackers
fuente