Obtenha o conteúdo da página usando o slug

9

Estou tentando obter o conteúdo da página quando conheço apenas a sequência do slug.

Existe uma função para isso, ou uma maneira fácil de fazer isso ou é um caso de fazê-lo via SQL?

Muito obrigado

    
por Alex 06.10.2012 / 22:08

4 respostas

26

Use get_posts() e o parâmetro name que é o slug:

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

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

Esteja ciente de que o tipo de postagem em get_posts() é padronizado como 'post' . Se você quiser uma página , use…

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

Se você quiser all tipos de postagens públicas (exceto anexos), defina o argumento de tipo de postagem como 'any' . Então você pode obter mais de um resultado porque as lesmas não são exclusivas entre diferentes tipos de postagem.

    
por fuxia 06.10.2012 / 22:24
4

Se na página com a lesma em questão

Leia as tags condicionais :
is_page() também considera o slug como um argumento.

Por isso,

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

fará o que você quiser.

Se em outra página

Se você estiver interessado em como buscar conteúdo de post / page com base em um slug quando não na página, você pode alimentar get_posts uma lesma também. Isso não está documentado no códice.

O seguinte irá buscar o id de um slug:

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

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

Você pode obter uma página pelo título usando a função get_page_by_title() .

Você pode usá-lo assim (supondo que você queira mostrar o conteúdo):

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

BTW, para obter uma página usando o 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'));
    
por Sisir 06.10.2012 / 22:30
1

Use get_page_by_path .

Sintaxe

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

Exemplo:

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

paramaisreferências,consulte Referência da função WordPress

Eu uso esse código ao preencher um modelo de tema de uma página,

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