Ottenere il contenuto della pagina usando lo slug
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

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.

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;

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'));

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
