Récupérer le contenu de la page à l'aide de slug

9

J'essaie d'obtenir le contenu de la page quand je ne connais que la chaîne de slug.

Existe-t-il une fonction pour cela, un moyen facile de le faire ou est-ce un cas de le faire via SQL?

Merci beaucoup

    
posée Alex 06.10.2012 - 22:08

4 réponses

26

Utilisez get_posts() et le paramètre name qui correspond au slug:

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

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

Sachez que le type de publication dans get_posts() est défini par défaut sur 'post' . Si vous voulez une page , utilisez…

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

Si vous voulez tous , les types de publication publique (à l'exception des pièces jointes), définissez l'argument de type de publication sur 'any' . Vous pouvez ensuite obtenir plusieurs résultats, car les slugs ne sont pas uniques parmi les différents types de publication.

    
réponse donnée fuxia 06.10.2012 - 22:24
4

Si sur la page avec le slug en question

À lire sur les balises conditionnelles :
is_page() prend également le slug comme argument.

Par conséquent,

if( is_page( 'your-slug' ) ) {
     // fetch content
}

fera ce que vous voulez.

Si sur une autre page

Si vous souhaitez savoir comment récupérer le contenu d'un article / d'une page basé sur un slug lorsque pas sur ladite page, vous pouvez alimenter get_posts également une limace. Ceci n’est pas documenté dans le codex.

Ce qui suit va chercher l'id d'un slug:

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

// echo fetched content
echo $posts_from_slug[0]->post_content;
    
réponse donnée Johannes Pille 06.10.2012 - 22:17
3

Vous pouvez obtenir une page par son titre à l'aide de la fonction get_page_by_title() .

Vous pouvez l'utiliser comme ceci (en supposant que vous vouliez afficher le contenu):

$page = get_page_by_title('Your Title'); 
$content = apply_filters('the_content', $page->post_content);
echo $content;

BTW, pour obtenir une page à l'aide d'un 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('my-slug'));
    
réponse donnée Sisir 06.10.2012 - 22:30
1

Utilisez get_page_by_path .

Syntaxe

<?php get_page_by_path( $page_path, $output, $post_type ); ?>

Exemple:

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

pourplusderéférences,voir Référence sur les fonctions WordPress

J'utilise ce code pour remplir un modèle de thème à partir d'une page,

        $about = get_page_by_path('about'); 
        $content = apply_filters( 'the_content', $about->post_content ); 
        echo $content;
    
réponse donnée PlanetHackers 21.10.2015 - 08:09

Lire d'autres questions sur les étiquettes