J'ai commencé à travailler sur un site Web après un autre développeur et il y a un problème avec son "widget populaire" qui affiche en gros 3 messages aléatoires de la catégorie. Il existe une déclaration Switch qui permet d'afficher, à partir de la catégorie actualités, 3 publications aléatoires ne datant pas d'au moins un mois et les autres catégories, 3 mois. Je ne comprends pas ce qu'il a fait là-bas avec ['intervalle'] mais quand j'utilise les paramètres de temps wordpress, je n'ai toujours pas de résultats.
function getSomePost($category,$postsPerPage=3) {
global $post;
$args = array(
'category_name'=>$category,
'posts_per_page'=>$postsPerPage,
'post_type'=>'post',
'post_status'=>'publish',
'post__not_in'=>array($post->ID),
'orderby'=>'Rand',
);
switch ($category)
{
case 'news':
$args['interval'] = '1 MONTH';
break;
case 'analysis':
$args['interval'] = '3 MONTH';
break;
case 'reports':
$args['interval'] = '3 MONTH';
break;
}
$query = new WP_Query($args);
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$postThumbClass = 'no-thumb';
?>
<div <?php post_class(array('wp-post-entry', 'sidebar-post' )); ?>>
<?php if(has_post_thumbnail ()):?>
<?php $postThumbClass = '' ?>
<div class="wp-post-thumbnail">
<a href="<?php the_permalink() ?>">
<?php the_post_thumbnail(array(70,70)); ?>
</a>
</div>
<?php endif; ?>
<div class="wp-post-full-content <?php echo $postThumbClass ?> ">
<h3 class="wp-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<!--
<div class="post-content">
<?php the_excerpt() ?>
</div>
//-->
</div>
</div>
}
}
}
J'essayais de remplacer l'interrupteur intérieur
case 'news':
$args['interval'] = '1 MONTH';
break;
avec
case 'news':
// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
// posts in the last 30 days
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
return $where;
}
add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $args );
remove_filter( 'posts_where', 'filter_where' );
break;
et
case 'analysis':
$args['interval'] = '3 MONTH';
break;
avec
case 'analysis':
// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
// posts in the last 30 days
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-90 days')) . "'";
return $where;
}
add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $args );
remove_filter( 'posts_where', 'filter_where' );
break;
mais ça ne marche pas, j'ai aussi essayé d'utiliser if ($category == 'news')
mais ça casse le site
Vous ne pouvez pas déclarer plusieurs fonctions avec le même nom en PHP. Les exemples du Codex pour cela sont une démonstration technique, plutôt qu'un extrait prêt à l'emploi.
Donnez à vos fonctions de filtrage des noms uniques, qui ne risquent pas d'entrer en conflit avec votre propre code ou celui de tiers.