Je viens de passer de la version 2.9 à la version 3.4.2 (je sais, je sais, mais si ce n'est pas cassé ...), j'ai des modèles de page qui sont (ou du moins ont été) configurés pour afficher le contenu de la page d'abord, puis commencer une boucle de messages, comme ceci:
<div id="content">
<div class="content-title">ABOUT THE SITE</div>
<div id="content-main">
<img src="<?php bloginfo('template_url'); ?>/images/headline.gif" />
<div class="nopad"><?php the_content(); ?></div>
</div>
<div class="content-title" style="color: #05B2A9;">POSTS BY DATE</div>
<div id="comments">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args= array(
'cat' => 8,
'paged' => $paged
);
query_posts($args);
?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$key="main img";
$my_main_img = get_post_meta($post->ID, $key, true);
$key="thumb img";
$my_thumb_img = get_post_meta($post->ID, $key, true);
?>
<div <?php post_class() ?>>
<div class="blog-list">
<div class="blog-list-img">
<!-- do stuff -->
</div>
</div>
</div>
<?php endwhile; ?>
<?php else : endif; ?>
<div id="blog-list-more">
<div class="next"><?php previous_posts_link(' ') ?></div>
<div class="previous"><?php next_posts_link(' ') ?></div>
</div>
</div>
</div>
Cela fonctionnait très bien dans la version 2.9, mais dans cette nouvelle mise à niveau, le contenu de la page n’a pas été affiché. J'ai plusieurs modèles de page et j'ai pu résoudre le problème sur les pages contenant des requêtes simples (comme la liste des contributeurs du blog) en mettant
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
avant <div id="content">
, mais comme vous pouvez l’imaginer sur la page principale de l’archive du blog, ce n’est pas une option. (J'ai juste essayé d'être sûr).
Alors, comment obtenir le contenu de la page en dehors de la boucle principale? Dois-je exécuter deux boucles? Il semble que ce serait une chose assez simple mais je ne peux pas comprendre comment. Je ne peux pas lancer une simple requête dans cette page car il y a toutes sortes de choses folles qui s'y passent. Ou puis-je?
Mettre à jour un thème n'est pas si difficile. Mais il est nécessaire de laisser Nice jouer avec la version actuelle du noyau.
Voici quelques notes sur ce que vous pourriez avoir à faire:
De nos jours, nous utilisons get_posts()
ou new WP_Query
dans les cas où vous devez effectuer une autre requête (manuelle) en plus de la requête par défaut de WordPress.
Alors tu appellerais:
$wpse69629_query = new WP_Query( array(
'cat' => 8
,'paged' => get_query_var('paged') ? get_query_var('paged') : 1;
) );
if ( $wpse69629_query->have_posts() )
{
while ( $wpse69629_query->have_posts() )
{
$wpse69629_query->the_post();
// do stuff
}
}
Comme vous avez une requête qui ne fait que charger des publications d’une catégorie spécifique, vous pouvez envisager d’ajouter un autre modèle qui se déclenche uniquement pour cette catégorie. Cela vous évitera une requête supplémentaire.
Copiez simplement votre code (sans la requête, mais avec une boucle par défaut) dans un nouveau fichier nommé category-8.php
.
Avec (après tout) WP 2.9, post miniatures/feat.images sont arrivées. Il semble simplement que cela n'ait pas été implémenté dans votre thème à l'époque.
Vous pouvez maintenant saisir la vignette attribuée (boîte méta de l'image sélectionnée) simplement en appelant the_post_thumbnail()
dans les vues de liste et ()
pour des vues uniques.
Le soutien pour cet exploit. et la taille sera définie dans vos fonctions php avec quelque chose comme ça:
function wpse69629_feat_img_size()
{
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 50, 50 );
}
add_action( 'after_setup_theme', 'wpse69629_feat_img_size' );
Vous pouvez ensuite l'appeler comme ceci dans le modèle:
<?php the_post_thumbnail('thumbnail', array('class' => 'alignleft')); ?>