J'ai un modèle qui avait initialement une seule boucle et qui utilisait query_posts, j'ai ajouté 2 boucles supplémentaires en utilisant la même méthode. Cependant, après avoir lu beaucoup de choses sur cela, il a été conclu que je vais arrêter de l'utiliser et tout le monde est contre.
Boucleoriginal query_posts (derniers articles)
<?php if ( !is_front_page() && tfuse_options(PREFIX.'_pagination_portfolio') ){
$cat = get_query_var( 'cat' );
query_posts( array ( 'posts_per_page' => -1, 'cat'=>$cat ) );
}
while (have_posts()) : the_post(); ?>
//blah posts here
<?php endwhile; ?>
2ème boucle get_posts personnalisée (messages aléatoires)
<?php if ( !is_front_page() ){
//$cat = get_query_var( 'cat' );
$args = array( 'numberposts' => 10, 'orderby' => 'Rand' );
$Rand_posts = get_posts( $args );
}
foreach( $Rand_posts as $post ) : ?>
//blah posts here
<?php endforeach; ?>
3ème boucle get_posts personnalisée non opérationnelle (messages les plus consultés)
if ( !is_front_page() ){
$cat = get_query_var( 'cat' );
$args = array( 'v_sortby' => 'views', 'v_orderby' => 'DESC', 'numberposts' => 10, 'cat'=> $cat);
$most_viewed_posts = get_posts( $args );
}
foreach( $most_viewed_posts as $post ) :
//blahblah
<?php endforeach; ?>
Le problème est que la troisième boucle ne montre pas les bons messages, comme si elle ne reconnaissait pas la méta de la publication. Cependant, si j'utilise query_posts, alors cela fonctionne!
vues v_sortby, v_orderby
Toute aide est appréciée, je suis assez nouveau pour cela.
UpdateSelon une question similaire posée sur ce site . Vous trouverez ci-dessous un autre moyen d'y parvenir en utilisant query_posts avec les clés méta. Je suppose qu'il existe un meilleur moyen de réécrire le code pour utiliser les clés méta + wp_query ou get_posts Je suis très nouveau à cela, l'air trop trapu? : S
<?php $posts_per_page = get_query_var('posts_per_page'); ?>
<?php $paged = intval(get_query_var('paged')); ?>
<?php $paged = ($paged) ? $paged : 1; ?>
<?php $args = array(
'posts_per_page' => $posts_per_page,
'paged' => $paged,
'more' => $more = 0,
'meta_key' => 'views',
'orderby' => 'meta_value_num',
'order' => 'DESC',
); ?>
<?php query_posts($args); ?>
<?php if (have_posts()) : while (have_posts()) : the_post() ;?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
Grâce aux conseils donnés par les commentateurs, j'ai pu y arriver :)
<?php
if ( is_front_age() ){
$most_viewed_posts = new WP_Query( array('v_sortby' => 'views', 'v_orderby' => 'DESC', 'showposts' => 10, 'cat'=> 3) );
}
while ( $most_viewed_posts->have_posts() ) : $most_viewed_posts->the_post(); ?>
//post structure
<?php wp_reset_postdata(); ?>