显示意外结果的WordPress自定义搜索表单

时间:2013-10-24 作者:Alex

我遇到了一个自定义搜索表单的问题,该表单无法按需要过滤结果。我需要根据所选日期和/或类别进行筛选。

模板中使用的代码:

<aside class="widget widget_filter">
      <h4>FILTER SEARCH</h4>
      <form method="get" action="<?php bloginfo(\'url\'); ?>">

      <input type="hidden" name="post_type" value="news" />

      <?php $args = array(
        \'order\' => \'DESC\',
        \'orderby\' => \'date\',
        \'post_type\' => \'news\',
        \'posts_per_page\' => \'-1\'
      );

      $counter = 0;
      $ref_month = \'\';
      $monthly = new WP_Query($args);
      if( $monthly->have_posts() ) : ?>
        <p>Date</p>
        <select name="m">
        <option value="">Please Select Date</option>

        <?php while( $monthly->have_posts() ) : $monthly->the_post();

          if( get_the_date(\'mY\') != $ref_month ) : ?>

            <option value="<?php the_date(\'Ym\'); ?>"><?php echo get_the_date(\'F Y\'); ?></option>
            <?php $ref_month = get_the_date(\'mY\');
            $counter = 0;
          endif;
        endwhile; ?>

        </select>
      <?php endif; ?>
      <?php wp_reset_postdata(); ?>
      <p>Filed In</p>
      <?php $terms = get_terms( \'news-category\' ); 
      foreach( $terms as $term ) : ?>
        <label><input type="checkbox" name="cat" value="<?php echo $term->term_taxonomy_id ?>" /><?php echo $term->name; ?></label>
      <?php endforeach; ?>

      <input type="image" src="<?php echo get_stylesheet_directory_uri(); ?>/images/btn-filter.png" />
      </form>
    </aside>
如果我只选择一个日期,它会正常工作,并重定向到类似的urlwebsite.dev/2013/09/?post_type=news&x=67&y=8

如果我选择一个日期和类别,它会重定向到一个404页面,其url类似于website.dev/?post_type=news&m=&cat=7&x=88&y=21

我尝试将cat参数更改为category,但Wordpress忽略了它。我的htaccess文件是按照Wordpress的建议设置的,我已经通过permalinks页面刷新了DNS,以防出现问题,但这并没有解决问题。

如何让它通过两个参数进行过滤?

编辑:这可能是因为它是一个自定义的帖子类型和自定义的分类法吗?我找不到要传递的正确参数名称,而不是“cat”

1 个回复
SO网友:Michael Ecklund

由于查询字符串的原因,您可能会得到意外的结果。我建议您熟悉以下内容:

列表WordPress Query Variablesget_query_var($var);WordPress Reserved Terms.

    保留条款

    如果您通过$_GET$_POST 大堆这样做可能会导致WordPress在没有任何其他提示或解释的情况下响应404错误。

    单击WordPress保留条款的链接以查看完整的条款列表。

结束

相关推荐

如果META_KEY的值=6|将wp_posts.post_date更改为当前日期

我有三个部分:1-新岗位2趋势岗位3热点岗位我使用的是投票插件,我对每个部分都进行了如下排序:新职位:$args = array( \'meta_query\'=> array( array( \'key\' => \'_wti_like_count\', \'compare\' => \'<=\', \'value\' => 5, \'type\' => \'n