J'essaie d'obtenir le contenu de la page lorsque je ne connais que la chaîne de slug.
Existe-t-il une fonction pour cela, ou un moyen facile de le faire ou s'agit-il de le faire via SQL?
Merci beaucoup
J'essaie d'obtenir le contenu de la page lorsque je ne connais que la chaîne de slug.
Existe-t-il une fonction pour cela, ou un moyen facile de le faire ou s'agit-il de le faire via SQL?
Merci beaucoup
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 le type de message par get_posts()
défaut est 'post'
. Si vous voulez utiliser une page …
$page = get_posts(
array(
'name' => 'your-slug',
'post_type' => 'page'
)
);
Si vous souhaitez que tous les types de publication publique (à l'exception des pièces jointes) définissez l'argument de type de publication sur 'any'
. Ensuite, vous pouvez obtenir plus d'un résultat car les slugs ne sont pas uniques entre les différents types de publication.
Vous pouvez obtenir une page par son titre en utilisant la get_page_by_title()
fonction.
Vous pouvez l'utiliser comme ceci (en supposant que vous souhaitez afficher le contenu):
$page = get_page_by_title('Your Title');
$content = apply_filters('the_content', $page->post_content);
echo $content;
BTW, pour obtenir la 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'));
Lisez 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 vous souhaitez savoir comment récupérer du contenu de publication / page basé sur un slug lorsqu'il n'est pas sur cette page, vous pouvez également alimenter get_posts
un slug. Ceci n'est pas documenté dans le codex.
Ce qui suit récupérera l'ID d'une limace:
$args = array(
'name' => 'your-slug'
);
$posts_from_slug = get_posts( $args );
// echo fetched content
echo $posts_from_slug[0]->post_content;
Utilisez get_page_by_path
.
Syntaxe
<?php get_page_by_path( $page_path, $output, $post_type ); ?>
Exemple:
//Returns the animal with the slug 'cat'
get_page_by_path('cat', OBJECT, 'animal');
pour plus d'informations, consultez la référence des fonctions WordPress
J'utilise ce code lors du remplissage d'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;