使用acf自定义字段构建搜索表单

时间:2019-01-24 19:49:59

标签: forms advanced-custom-fields

我正在尝试使用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>

0 个答案:

没有答案