Obține conținutul paginii folosind slug

6 oct. 2012, 23:08:47
Vizualizări: 52.4K
Voturi: 14

Î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

0
Toate răspunsurile la întrebare 4
0
37

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.

6 oct. 2012 23:24:53
0

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;
6 oct. 2012 23:17:47
0

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'));
6 oct. 2012 23:30:04
0

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

Parametri

21 oct. 2015 09:09:17