快速提问。。。哪种情况适用?
如果您只需要查询两段元数据之间的今天的日期,我会创建一个小部件,运行一个相当直接的WP\\u查询并输出帖子。
如果您要求用户输入要搜索的日期,我可能仍然会使用小部件,但会使用jQuery UI日期选择器方法,以获得更好的用户界面和数据完整性。
无论怎样,我都不会改变股票搜索表单的用途(它只是一个小部件)。
好啊如果是选项1,请尝试此。。。在函数文件中构建小部件。
class my_events_widget extends WP_Widget {
//custom properties
public $base_id = \'my_events\';
public $title = \'My Events Title\';
public $description = "Today’s Events";
//end
function __construct(){
parent::__construct($this->base_id,$this->title,[\'description\'=>$this->description]);
}
public function widget($args, $instance) {
$str = \'<div class="widget"><h2>\'.$this->description.\'</h2><ul>\';
$q = new WP_Query([
\'post_type\'=>\'events\',
\'meta_query\'=>[
\'relation\'=>\'AND\',
[
\'key\'=>\'start_date\',
\'value\'=>date(\'Y-m-d\'),
\'type\'=>\'DATE\',
\'compare\'=>\'<=\'
],
[
\'key\'=>\'end_date\',
\'value\'=>date(\'Y-m-d\'),
\'type\'=>\'DATE\',
\'compare\'=>\'>=\'
]]
]);
if ($posts = $q->get_posts()) {
foreach ($posts as $post) {
$str .= sprintf(\'<li><a href="%s">%s - %s</a></li>\', esc_attr(get_permalink($post)), $post->post_title, get_the_date(\'M j, Y\', $post));
}
} else $str .= "<li>Nothing posted currently. Please check back.</li>";
$str .= \'</ul></div>\';
echo $str;
}
}
现在在主题的函数文件中注册小部件。
function my_custom_widgets() {
register_widget(\'my_events_widget\');
}
add_action(\'widgets_init\',\'my_custom_widgets\');
您可以将小部件放在侧栏中,或将其用作页面/帖子中的模板标记,使用
the_widget()
function.
可能需要稍微调整一下WP\\u查询,因为我无法完全测试它,但它应该可以完成工作。