我正在建立一个具有事件功能的Wordpress网站。“事件”页面是使用自定义帖子类型创建的。
我想让人们能够按日期搜索/过滤事件。例如,他们可以搜索2011年12月2日至2012年3月1日之间发生的所有事件,并从日期介于12月和3月(即12月、1月、2月和3月)之间的事件中获取结果。
我想知道最好的方法。有什么想法吗?
通过查看此页面上的“按日期搜索事件”功能,您可以看到我想要实现的一个示例http://www.londontown.com/events
以下是开始和结束日期元框的代码:
$prefix = \'ghes_\';
add_filter( \'ghes_meta_boxes\', \'ghes_sample_metaboxes\' );
function ghes_sample_metaboxes( $meta_boxes ) {
global $prefix;
$meta_boxes[] = array(
\'id\' => \'event_meta\',
\'title\' => \'Event Metabox\',
\'pages\' => array(\'event\'), // post type
\'context\' => \'normal\',
\'priority\' => \'high\',
\'show_names\' => true,
\'fields\' => array(
array(
\'name\' => \'Event Start Date\',
\'desc\' => \'field description (optional)\',
\'id\' => $prefix . \'event_start_timestamp\',
\'type\' => \'text_date_timestamp\'
),
array(
\'name\' => \'Event End Date\',
\'desc\' => \'field description (optional)\',
\'id\' => $prefix . \'event_end_timestamp\',
\'type\' => \'text_date_timestamp\'
)
以下是日期数据的保存方式:
case \'text_date_timestamp\':
echo \'<input class="ghes_text_small ghes_datepicker" type="text" name="\', $field[\'id\'], \'" id="\', $field[\'id\'], \'" value="\', $meta ? date( \'m\\/d\\/Y\', $meta ) : $field[\'std\'], \'" /><span class="ghes_metabox_description">\', $field[\'desc\'], \'</span>\';
break;
这是我的搜索框:
<form action="<?php bloginfo(\'url\'); ?>" method="get" id="searchform" class="form_search">
Event Search:
<!-- START Category Search -->
<select name="event_cat">
<option value="0">Select...</option>
<?php
$theterms = get_terms(\'event_cat\', \'orderby=name\');
foreach ($theterms AS $term) :
echo "<option value=\'".$term->slug."\'".($_GET[\'event_cat\'] == $term->slug ? \' selected="selected"\' : \'\').">".$term->name."</option>\\n";
endforeach;
?>
</select>
<!-- END Category Search -->
<!-- START Date Search -->
<span class="em-events-search-dates">
<?php _e(\'between\',\'ghes\'); ?>:
<input class="ghes_text_small ghes_datepicker" type="text_date_timestamp" name="ghes_event_start_timestamp" id="ghes_event_start_timestamp" value=""/>\'
<input type="hidden" id="ghes_event_start_timestamp" name="start" value="" />
<?php _e(\'and\',\'ghes\'); ?>
<input class="ghes_text_small ghes_datepicker" type="text" name="ghes_event_end_timestamp" id="ghes_event_end_timestamp" value=""/>\'
<input type="hidden" id="ghes_event_end_timestamp" name="end" value="" />
</span>
<!-- END Date Search -->
<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce(\'search_events\'); ?>" />
<input type="submit" value="<?php _e(\'Search\',\'ghes\'); ?>" class="em-events-search-submit" />
</form>
如何让表单处理“日期搜索”数据并在用户选择的日期之间显示结果?
搜索表单是否缺少任何内容?是否有一些我应该添加到函数中的内容。php来实现这一点?
我已经寻找答案将近两周了,我真的很想知道这是怎么回事。如果您对如何实现这一目标有想法,请分享您的想法。
提前谢谢。