【问题标题】:Filter do not apply Wordpress过滤器不应用 Wordpress
【发布时间】:2021-06-16 21:02:25
【问题描述】:

我在标签中有一个过滤器。我使用汽车主题。过滤器必须使用应用选项在主过滤器​​的页面上重定向。它重定向和选项应用在列表中,但链接没有改变(应该是这样的:site.com/?page_id=16410&make=citroen&ca-year=2012&min_price=2000&max_price=200000)但就像这样:site.com/?page_id=16410(主过滤器页面)。在这张图片上,我选择了雪佛兰汽车,但它不适用:Chevrolet

如果我再选择一个选项,它将应用所有选项,但我希望它能够从选项卡中正常工作。

表格代码:

<form action="<?php echo esc_url( stm_get_listing_archive_link() ); ?>" method="post">
    <?php foreach ( $tax_query_args as $taxonomy_term_key => $taxonomy_term ): ?>
        <?php //empty($taxonomy_term[0]->numeric) and ?>
        <?php if ( !empty( $taxonomy_term[0] ) ): ?>
            <div class="col-md-<?php echo esc_attr( $filter_columns_number ); ?> col-sm-6">
                <div class="form-group">
                    <select name="<?php echo ( esc_attr( $taxonomy_term_key ) == "price" ) ? "max_price" : esc_attr( $taxonomy_term_key ) ?>" class="form-control">
                        <option value=""><?php printf( esc_html__( 'Select %s', 'motors' ), stm_get_name_by_slug( $taxonomy_term_key ) ); ?></option>
                        <?php foreach ( $taxonomy_term as $attr_key => $attr ): ?>
                            <option value="<?php echo esc_attr( $attr->slug ); ?>"
                                 <?php if ( $attr->count == 0 && !$taxonomy_term[0]->numeric ) {
                                    echo 'disabled="disabled"';
                                } ?>
                                    data-disabled="<?php echo ( esc_attr( $attr->count ) == 0 && !$taxonomy_term[0]->numeric ) ? 'disabled' : "null" ?>">
                                <?php echo ( esc_attr( $taxonomy_term_key ) == "price" ) ? stm_listing_price_view( $attr->name ) : esc_attr( $attr->name ); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
            </div>
        <?php endif; ?>
    <?php endforeach; ?>
    <div class="col-md-3 col-sm-6">
        <div class="row">
            <div class="col-md-8 col-sm-12">
                <button type="submit" class="button icon-button">
                   <i class="stm-icon-search"></i><?php esc_html_e( 'Search', 'motors' ); ?>
               </button>
            </div>
            <div class="col-md-4 hidden-sm hidden-xs">
                <a href="" class="reset-all reset-styled"
                   title="<?php esc_html_e( 'Reset search fields', 'motors' ); ?>">
                    <i class="stm-icon-reset"></i>
                </a>
            </div>
        </div>
    </div>
</form>

【问题讨论】:

  • 当您提交此内容时,您是否已经在页面/?page_id=16410 上?听起来表单可能实际上并没有提交,但是有 JavaScript 代码阻止了正常提交,并在后台加载过滤后的数据。
  • 不,带有表单的选项卡在默认页面 (site.com) 上,/?page_id=16410 是带有过滤器的目录(该页面在屏幕截图上)
  • 如果提交表单只是将您带到/?page_id=16410,那么当没有实际发送到那里的字段值开始时,我看不到过滤器如何实际应用于目标页面和。您能否使用浏览器开发工具、网络面板检查提交表单时实际触发的请求?
  • 它有 method="post" 将过滤器的选项发送到 /?page_id=16410。它发送它们但不应用它们
  • 你在说什么,你上面的代码包含method="get" ...?

标签: php wordpress forms filter tabs


【解决方案1】:

如果您希望参数显示在 URL 中,那么您需要使用方法 GET,而不是 POST

而且由于您的表单操作 URL 已经包含 GET 参数,因此还需要考虑 submitting a GET form with query string params and hidden params disappear 下的说明 - 当提交表单时,这些参数将被丢弃,因此需要通过隐藏提供参数字段:

<input type="hidden" name="page_id" value="16410">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多