我期待在類別頁面頂部有一個下拉菜單,允許我按日期篩選帖子。我很可能不得不使用自定義字段,但這不是問題。如何按日期篩選類別文章?
我知道你可以使用GET風格變量進行自定義後查詢,但啓用了漂亮的網址,我似乎無法使用GET變量來過濾特定的職位(如www.domain.com/category/?orderby=title&order=ASC
等等等等)
我試圖尋找對於插件來說,但是沒有什麼東西可以跳出來滿足我的需求,而且我也注意到這裏有很多關於類似主題的討論,對於我的情況沒有像樣的解決方案。
我期待在類別頁面頂部有一個下拉菜單,允許我按日期篩選帖子。我很可能不得不使用自定義字段,但這不是問題。如何按日期篩選類別文章?
我知道你可以使用GET風格變量進行自定義後查詢,但啓用了漂亮的網址,我似乎無法使用GET變量來過濾特定的職位(如www.domain.com/category/?orderby=title&order=ASC
等等等等)
我試圖尋找對於插件來說,但是沒有什麼東西可以跳出來滿足我的需求,而且我也注意到這裏有很多關於類似主題的討論,對於我的情況沒有像樣的解決方案。
一般的查詢是這個樣:
<?php $posts = query_posts($query_string . '&orderby=date&order=asc'); ?>
<?php if($posts) : ?>
//whatever
<?php foreach($posts as $post) : setup_postdata($post); ?>
//whatever
<p><?php the_content(); ?></p>
<?php endforeach; ?>
<?php endif; ?>
對於下拉菜單中,你可以做這樣的事情:
$args = $args=array(
'cat' => $cat_id,
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'DATE',
'order' => 'ASC' // or DESC
);
<form action="<? bloginfo('url'); ?>" method="get">
<select name="page_id" id="page_id">
<?php
global $post;
$args = array('numberposts' => -1);
$posts = get_posts($args);
foreach($posts as $post) : setup_postdata($post); ?>
<option value="<? echo $post->ID; ?>"><?php the_title(); ?></option>
<?php endforeach; ?>
</select>
<input type="submit" name="submit" value="view" />
</form>
而另一種選擇:
<?php
$cat_id = get_cat_ID('uncategorized'); //your-category
$args=array(
'cat' => $cat_id,
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'DATE',
'order' => 'ASC' // or DESC
);
$my_query = null;
$my_query = new WP_Query($args);
if($my_query->have_posts()) {
?>
<form name="jump">
<select name="menu">
<?php
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<option value="<?php the_permalink() ?>"><?php the_title(); ?></option>
<?php
endwhile;
}
?>
</select>
<input type="button" onClick="location=document.jump.menu.options[document.jump.menu.selectedIndex].value;" value="Go">
</form>
<?php
wp_reset_query();
?>
我一直在尋找按日期搜索帖子。無法在stackoverflow上找到合適的解決方案。然後我打印了wp_query對象並將其排序。它爲我工作。在我的情況下,按照標題或日期搜索帖子。這裏是鉤子的代碼。
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
// check if query is a date
$search_query = $query->query['s'];
$date_format = DateTime::createFromFormat('d/M/Y', $search_query);
if ($date_format)
{
$dte = date('j',$date_format->getTimestamp());
$month = date('n',$date_format->getTimestamp());
$year = date('Y',$date_format->getTimestamp());
}
if (isset($dte) && isset($month) && isset($year)) {
unset($query->query['s']);
unset($query->query_vars['s']);
$query->query['date_query'] = array(
array(
'year' => $year,
'month' => $month,
'day' => $dte,
)
);
$query->set('date_query', array(
array(
'year' => $year,
'month' => $month,
'day' => $dte,
)
)
);
}
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
爲u可以看到此過濾器,如果傳遞參數是字符串或日期自動檢查。 m使用
$query->set('post_type', 'post')
得到的帖子結果只有其他明智的它也會獲取頁面。 假設你有每個帖子下的日期你可以添加href到該日期。因此要獲得該日期 的所有帖子像HREF增加的搜索參數的時結束?S =東西
http://my.blog?s=1/Jun/2015
等ü不需要寫烏爾定製forwhile只使用默認的模板功能,如have_posts()