我正在尝试使用ACF在前端构建表单;我创造了2 自定义字段,一个日期选择器和一个下拉菜单。我的目标是让用户按“日期”搜索“活动”。他们选择活动,然后选择日期,单击“提交”按钮,然后将其重定向到$ this日期为$ this的活动的结果页面。 目前,这是我的代码:我在前端有表单,但是当我单击“提交”时,我被重定向到包含所有帖子的页面,并且URL非常宽松...我需要帮助来了解过程..以及我在做什么错...
/*functions.php*/
function search_filter($query) {
if ( !is_admin() && $query->is_main_query() ) {
if ($query->is_search) {
$meta_query = array();
if( isset($_POST['mois']) && $_POST['mois'] ){
$meta_query = array(
array(
'key' => 'mois',
'value' => $_POST['mois'],
'compare' => '='
)
);
}
if( isset($_POST['themes']) && $_POST['themes'] ){
$meta_query = array(
array(
'key' => 'themes',
'value' => $_POST['themes'],
'compare' => '='
)
);
}
$query->set('meta_query', $meta_query);
}
}
}
add_action('pre_get_posts','search_filter');
目前我决定将其放置在single.php中,但它可以在任何地方
<?php
acf_form_head() ?>
<?php get_header(); ?>
<?php paris_post_thumbnail(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main">
<?php
while ( have_posts() ) :
the_post();
get_template_part( 'template-parts/content', get_post_type() );
endwhile; // End of the loop.
;?>
<div class="form-multiple"><?php
get_template_part( 'template-parts/searchform','advanced');?>
</div></main><!-- #main -->
</div><!-- #primary -->
<?php get_sidebar(); get_footer();
最后,我建立了自定义搜索表单,将其显示在模板forlder中名为Advanced-searchform.php的文件的前端;
<form method="GET" id="advanced-searchform" role="search" action="<?php echo
esc_url( home_url( '/' ) ); ?>">
<input type="hidden" name="s" value="">
<h3><?php _e( 'Advanced Search', 'paris' ); ?></h3>
<?php $settings = array( 'id' => 'acf-form',
'fields' => array('date','themes'),
'form' => true,
'return' => esc_url(add_query_arg( array( 'date' => '$_POST["date"]',
'themes' => '$_POST["themes"]'), home_url() )),
'submit_value' => __("Submit", 'acf'));
acf_form( $settings );?>
</form>