Obtener el contenido de una página usando el slug
Estoy tratando de obtener el contenido de una página cuando solo conozco la cadena del slug.
¿Existe una función para esto, o una manera fácil de hacerlo, o es un caso donde debo usar SQL?
Muchas gracias

Usa get_posts()
y el parámetro name
que es el slug:
$page = get_posts([ 'name' => 'tu-slug' ]);
if ( $page )
{
echo $page[0]->post_content;
}
Ten en cuenta que el tipo de post en get_posts()
por defecto es 'post'
. Si quieres una página usa…
$page = get_posts([
'name' => 'tu-slug',
'post_type' => 'page'
]);
Si deseas todos los tipos de post públicos (excepto adjuntos) establece el argumento post type a 'any'
. Entonces podrías obtener más de un resultado porque los slugs no son únicos entre diferentes tipos de post.

Si estás en la página con el slug en cuestión
Lee sobre etiquetas condicionales:is_page()
también acepta el slug como argumento.
Por lo tanto,
if( is_page( 'tu-slug' ) ) {
// obtener contenido
}
hará lo que necesitas.
Si estás en otra página
Si te interesa saber cómo obtener el contenido de una entrada/página basado en un slug cuando no estás en dicha página, puedes pasarle un slug a get_posts
. Esto no está documentado en el codex.
Lo siguiente obtendrá el ID a partir de un slug:
$args = array(
'name' => 'tu-slug'
);
$posts_from_slug = get_posts( $args );
// mostrar el contenido obtenido
echo $posts_from_slug[0]->post_content;

Puedes obtener una página por su título usando la función get_page_by_title()
.
Puedes usarla así (asumiendo que quieres mostrar el contenido):
$page = get_page_by_title('Tu Título');
$content = apply_filters('the_content', $page->post_content);
echo $content;
Por cierto, para obtener una página usando el 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('mi-slug'));

Utiliza get_page_by_path
para recuperar el objeto WP_Post, luego puedes extraer el contenido de la publicación y filtrarlo para la salida HTML si es necesario.
Sintaxis
get_page_by_path( string $page_path, string $output = OBJECT, string|array $post_type = 'page' )
Ejemplo:
Uso este código cuando completo una plantilla de tema desde una página, para asegurar que el contenido se renderice como HTML:
<?php
$about = get_page_by_path('about');
$content = apply_filters( 'the_content', $about->post_content );
echo $content;
?>
Para obtener una publicación de un tipo diferente, pasa los otros dos parámetros:
get_page_by_path('gato', OBJECT, 'animal');
para más referencia consulta Referencia de Funciones de WordPress
