Obtener contenido de la página usando slug

9

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

¿Existe una función para esto, o una forma fácil de hacerlo o se trata de hacerlo a través de SQL?

Muchas gracias

    
pregunta Alex 06.10.2012 - 22:08

4 respuestas

26

Utilice get_posts() y el parámetro name , que 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 en get_posts() por defecto es 'post' . Si quieres una página utiliza ...

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

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

    
respondido por el fuxia 06.10.2012 - 22:24
4

Si está en la página con la bala en cuestión

Lea sobre etiquetas condicionales :
is_page() también toma el slug como argumento.

Por lo tanto,

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

hará lo que quieras.

Si está en otra página

Si le interesa saber cómo obtener contenido de publicación / página basado en una bala cuando no en dicha página, puede ingresar get_posts también es una babosa. Esto no está documentado en el códice.

Lo siguiente obtendrá el ID de una babosa:

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

// echo fetched content
echo $posts_from_slug[0]->post_content;
    
respondido por el Johannes Pille 06.10.2012 - 22:17
3

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

Puedes usarlo así (suponiendo que quieras 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'));
    
respondido por el Sisir 06.10.2012 - 22:30
1

Use get_page_by_path .

Sintaxis

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

Ejemplo:

//Returnstheanimalwiththeslug'cat'get_page_by_path('cat',OBJECT,'animal');

paraobtenermásinformación,consulte Referencia de funciones de WordPress

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

        $about = get_page_by_path('about'); 
        $content = apply_filters( 'the_content', $about->post_content ); 
        echo $content;
    
respondido por el PlanetHackers 21.10.2015 - 08:09

Lea otras preguntas en las etiquetas