Obține conținutul paginii folosind slug
Încerc să obțin conținutul unei pagini când cunosc doar șirul slug.
Există o funcție pentru acest lucru sau o modalitate ușoară de a face asta, sau trebuie să folosesc o interogare SQL?
Vă mulțumesc mult

Folosește get_posts()
și parametrul name
care reprezintă slug-ul:
$page = get_posts([ 'name' => 'your-slug' ]);
if ( $page )
{
echo $page[0]->post_content;
}
Fii atent că tipul de postare în get_posts()
are implicit valoarea 'post'
. Dacă vrei o pagină folosește …
$page = get_posts([
'name' => 'your-slug',
'post_type' => 'page'
]);
Dacă vrei toate tipurile de postări publice (cu excepția atașamentelor) setează argumentul post_type la 'any'
. Atunci ai putea obține mai multe rezultate deoarece slug-urile nu sunt unice între diferite tipuri de postări.

Dacă te afli pe pagina cu slug-ul în cauză
Citește mai multe despre etichetele condiționale:is_page()
acceptă și slug-ul ca argument.
Prin urmare,
if( is_page( 'your-slug' ) ) {
// preia conținutul
}
va face ceea ce dorești.
Dacă te afli pe o altă pagină
Dacă ești interesat de cum să preiei conținutul unui post/pagină pe baza unui slug când nu te afli pe acea pagină, poți folosi și get_posts
cu un slug. Acest lucru nu este documentat în codex.
Următorul cod va prelua ID-ul pe baza unui slug:
$args = array(
'name' => 'your-slug'
);
$posts_from_slug = get_posts( $args );
// afișează conținutul preluat
echo $posts_from_slug[0]->post_content;

Puteți obține o pagină după titlul ei folosind funcția get_page_by_title()
.
Puteți folosi funcția astfel (presupunând că doriți să afișați conținutul):
$page = get_page_by_title('Titlul Tău');
$content = apply_filters('the_content', $page->post_content);
echo $content;
Apropo, pentru a obține o pagină folosind slug-ul:
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('slug-ul-meu'));

Folosește get_page_by_path
pentru a obține obiectul WP_Post, apoi poți extrage conținutul postării și filtra pentru ieșire HTML dacă este necesar.
Sintaxă
get_page_by_path( string $page_path, string $output = OBJECT, string|array $post_type = 'page' )
Exemplu:
Folosesc acest cod când populez un șablon de temă dintr-o pagină, pentru a mă asigura că conținutul este randat ca HTML:
<?php
$about = get_page_by_path('about');
$content = apply_filters( 'the_content', $about->post_content );
echo $content;
?>
Pentru a obține o postare de alt tip, treci celelalte două parametri:
get_page_by_path('cat', OBJECT, 'animal');
pentru mai multe referințe vezi WordPress Function Reference
