Ottenere il contenuto della pagina usando lo slug

6 ott 2012, 23:08:47
Visualizzazioni: 52.4K
Voti: 14

Sto cercando di ottenere il contenuto di una pagina quando conosco solo la stringa dello slug.

Esiste una funzione per questo, o un modo semplice per farlo oppure è necessario farlo tramite SQL?

Grazie mille

0
Tutte le risposte alla domanda 4
0
37

Utilizza get_posts() e il parametro name che corrisponde allo slug:

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

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

Tieni presente che il post type in get_posts() di default è 'post'. Se vuoi recuperare una pagina utilizza …

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

Se vuoi recuperare tutti i post type pubblici (esclusi gli allegati) imposta il parametro post type a 'any'. In questo caso potresti ottenere più di un risultato perché gli slug non sono univoci tra diversi post type.

6 ott 2012 23:24:53
0

Se nella pagina con lo slug in questione

Leggi riguardo i tag condizionali:
is_page() accetta anche lo slug come argomento.

Quindi,

if( is_page( 'your-slug' ) ) {
     // recupera il contenuto
}

farà ciò che desideri.

Se in un'altra pagina

Se sei interessato a come recuperare il contenuto di un post/pagina basandoti su uno slug quando non ti trovi in quella pagina, puoi passare lo slug anche a get_posts. Questo non è documentato nel codex.

Il seguente codice recupererà l'ID da uno slug:

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

// mostra il contenuto recuperato
echo $posts_from_slug[0]->post_content;
6 ott 2012 23:17:47
0

Puoi ottenere una pagina dal suo titolo utilizzando la funzione get_page_by_title().

Puoi usarla in questo modo (supponendo che tu voglia mostrare il contenuto):

$page = get_page_by_title('Il Tuo Titolo'); 
$content = apply_filters('the_content', $page->post_content);
echo $content;

A proposito, per ottenere una pagina usando lo 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('il-mio-slug'));
6 ott 2012 23:30:04
0

Utilizza get_page_by_path per recuperare l'oggetto WP_Post, poi puoi estrarre il contenuto del post e filtrarlo per l'output HTML se necessario.

Sintassi

get_page_by_path( string $page_path, string $output = OBJECT, string|array $post_type = 'page' )

Esempio:

Utilizzo questo codice quando popolo un template del tema da una pagina, per assicurarmi che il contenuto venga renderizzato come HTML:

<?php
$about = get_page_by_path('about'); 
$content = apply_filters( 'the_content', $about->post_content ); 
echo $content;
?>

Per ottenere un post di un tipo diverso, passa gli altri due parametri:

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

per ulteriori riferimenti vedi WordPress Function Reference

Parametri

21 ott 2015 09:09:17