J'ai trouvé cet exemple ici de création d'une page de blog personnalisée:
http://www.wpbeginner.com/wp-themes/how-to-create-a-custom-homepage-in-wordpress/
1) J'ai créé une page de blog sous Pages> Ajouter un nouveau 2) Sous Modèle, je sélectionne "Blog" 3) Notez que j'ai créé un fichier blog.php dans mon thème personnalisé contenant ce contenu:
<?php
/*
Template Name: Blog
*/
?>
<?php
echo "Hello World";
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('posts_per_page=5'.'&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
4) Dans Réglages> Lecture, sous "Affichages de la page de couverture", je règle "Page de messages:" sur "Blog".
Maintenant, je regarde ma page de blog dans le navigateur, il rend juste tous mes messages. Mais cela ne fait pas écho au "Hello World" et si je supprime le code de blog.php, cela n’a aucun effet! Il ne fait toujours que rendre tous les messages. Et puis j'essaie d'ajouter une requête personnalisée:
<?php
/*
Template Name: Blog
*/
?>
<?php
global $wpdb;
$content = $wpdb->get_row(
$wpdb->prepare(
"SELECT * FROM $wpdb->posts
WHERE post_type = %s
LIMIT 1
",
'header_post'
)
);
echo $content->post_content;
?>
Et encore une fois, il ignore cela et rend juste tous les posts avec post_type de post et un post_status de publication.
De toute évidence, le code de mon blog.php est ignoré. Pourquoi?
C’est à quoi il ressemble actuellement (date de publication manquante, commentaire manquant):
http://i49.tinypic.com/2caq0g.jpg
J'ai apporté des modifications à l'index.php dans mon thème:
<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('posts_per_page=1'.'&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
et toujours aucun effet
Lorsque vous définissez une page comme page pour les publications, elle ne fonctionne plus comme une page Vanilla, la hiérarchie des modèles dicte un ensemble différent de modèles pour cette page. Votre modèle sélectionné ne semble pas fonctionner, car il n'est pas chargé.
Voir la hiérarchie template pour plus d’informations. Vous devez nommer votre modèle home.php
si vous souhaitez qu’il soit utilisé sur la page des publications.
Comme Milo dit, la hiérarchie des modèles détermine le modèle utilisé. Si vous voulez que vos articles de blog aillent sur la page de blog, vous avez 2 options.
Définissez votre page d'accueil sur une page statique et choisissez un blog pour votre page de messages dans la lecture des paramètres. Ensuite, vous devrez apporter vos modifications à index.php. Vous obtiendrez les derniers messages et la page serait nommée blog.
Définissez votre page d'accueil sur static et ne choisissez pas de page de blog, puis créez un modèle personnalisé comme vous l'avez fait dans votre exemple de code. Cependant, dans votre exemple de code, il n'est pas vraiment nécessaire de définir $ wp_query sur $ temp. Renommez simplement votre nouveau WP_Query $ my_query ou quelque chose du genre.