web-dev-qa-db-fra.com

Obtenir le contenu de la page en utilisant slug

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

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

Merci beaucoup

9
Alex

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

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

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

Sachez que la publication de type get_posts() est 'post' par défaut. Si vous voulez un page use…

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

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

27
fuxia

Si sur la page avec la limace en question

Lire sur balises conditionnelles :
is_page() prend également la limace 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 à partir d'un slug lorsque not sur cette page, vous pouvez également alimenter get_posts un slug. 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;
4
Johannes Pille

Vous pouvez obtenir une page par son titre en utilisant get_page_by_title() function.

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 de 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'));
3
Sisir

Utilisez get_page_by_path.

Syntaxe

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

 Parameters 

Exemple:

//Returns the animal with the slug 'cat'
get_page_by_path('cat', OBJECT, 'animal');

pour plus de refernce voir Référence des 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;
1
PlanetHackers