私は別の開発者の後に1つのウェブサイトで働き始めました、そして、基本的にカテゴリーから3つのランダムなポストを示している彼の「人気のあるウィジェット」に問題があります。カテゴリニュース3からランダムで、1か月以上経過していない他のカテゴリから3か月表示するように規制しているSwitch文があります。彼が['interval']で何をしたのか理解できませんが、ワードプレスの時間パラメータを使用してもまだ結果がわかりません。
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>
}
}
}
私は中のスイッチを交換しようとしていました
case 'news':
$args['interval'] = '1 MONTH';
break;
と
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;
そして
case 'analysis':
$args['interval'] = '3 MONTH';
break;
と
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;
私はif ($category == 'news')
を使うことも試みましたが、それはサイトを壊します
PHPでは、同じ名前で複数の関数を宣言することはできません。このためのコーデックスの例は、既製の使用可能な断片ではなく、技術的なデモです。
あなたのフィルタ関数にあなた自身のあるいは第三者のコードと衝突しそうにないユニークな名前を与えなさい。