如何在Wordpress中修复表单提交的副本?

问题描述 投票:0回答:1

我正在努力在wordpress中修复默认搜索形式。我只是设置一些过滤器,以使用户选择,然后单击“确定”以使用过滤器进行搜索,除“标记”复选框外,其他所有功能都正常运行。

我尝试了所有这些方法:标签(字符串)–使用标签段塞。tag_id(int)–使用标签ID。tag__and(数组)–使用标签ID。tag__in(数组)–使用标签ID。tag__not_in(数组)–使用标签ID。tag_slug__and(array)–使用标签块。tag_slug__in(数组)–使用标签块。

但结果相同。

我在searchform.php中的搜索表单

<form role="search" method="get" id="searchform" class="skytube-search-form" action="<?php echo home_url( '/' ); ?>">
    <input type="search" placeholder="<?php esc_attr_e( 'Search for what you want...', 'aldoustech' ); ?>" value="<?php the_search_query(); ?>" name="s" id="s" onkeyup="search()">
    <label for="order">الترتيب حسب التاريخ</label>
    <select name="order">
        <option <?php if ($_GET['order'] == 'ASC') { ?>selected="true" <?php }; ?>value="ASC">الأقدم</option>
        <option <?php if ($_GET['order'] == 'DESC') { ?>selected="true" <?php }; ?>value="DESC">الأحدث</option>
    </select>
    <label for="posts_per_page">عدد النتائج المعروضة</label>
    <select name="posts_per_page">
        <option <?php if ($_GET['posts_per_page'] == '10') { ?>selected="true" <?php }; ?>value="10">10</option>
        <option <?php if ($_GET['posts_per_page'] == '50') { ?>selected="true" <?php }; ?>value="50">50</option>
        <option <?php if ($_GET['posts_per_page'] == '100') { ?>selected="true" <?php }; ?>value="100">100</option>
    </select>
    <label for="category_name">التصنيف</label>
    <select name="category_name">
        <option <?php if ($_GET['category_name'] == '') { ?>selected="true" <?php }; ?>value="">
            الكل
        </option>
        <option <?php if ($_GET['category_name'] == 'مسلسلات-أنمي') { ?>selected="true" <?php }; ?>value="مسلسلات-أنمي">
            مسلسلات أنمي
        </option>
        <option <?php if ($_GET['category_name'] == 'مسلسلات آسيوية') { ?>selected="true" <?php }; ?>value="مسلسلات آسيوية">
            مسلسلات آسيوية
        </option>
        <option <?php if ($_GET['category_name'] == 'مسلسلات-الأنيميشن-و-الكرتون') { ?>selected="true" <?php }; ?>value="مسلسلات-الأنيميشن-و-الكرتون">
            مسلسلات الأنيميشن و الكرتون
        </option>
        <option <?php if ($_GET['category_name'] == 'أفلام-أنمي') { ?>selected="true" <?php }; ?>value="أفلام-أنمي">
            أفلام أنمي
        </option>
        <option <?php if ($_GET['category_name'] == 'أفلام آسيوية') { ?>selected="true" <?php }; ?>value="أفلام آسيوية">
            أفلام آسيوية
        </option>
        <option <?php if ($_GET['category_name'] == 'أفلام-الأنيميشن-و-الكرتون') { ?>selected="true" <?php }; ?>value="أفلام-الأنيميشن-و-الكرتون">
            أفلام الأنيميشن و الكرتون
        </option>
    </select>
    <div>
        <?php
            if( $terms = get_terms( array(
                'taxonomy' => 'post_tag',
                'orderby' => 'name'
            ) ) ) : 
                foreach ( $terms as $term ) :
                    echo '<input type="checkbox" name="tag" value="' . $term->slug . '"' . (($_GET['tag'] ==  $term->slug)?'checked':"") . '> ' . $term->name;
                endforeach;
            endif;
        ?>
    </div>
    <input type="submit" id="searchsubmit" value="<?php esc_attr_e( 'Search', 'aldoustech' ); ?>">
</form>

[当我选择一些过滤器然后点击搜索时,URL变成类似这样。

http://localhost:8080/wordpress/?s=&order=ASC&posts_per_page=10&cat=3

并且当我选择一个标签时,URL看起来像这样

http://localhost:8080/wordpress/?s=&order=ASC&posts_per_page=10&cat=3&tag=hello

两个URL都很好,但是当我选择多个标签时,URL变成了这样。

http://localhost:8080/wordpress/?s=&order=ASC&posts_per_page=10&cat=3&tag=hello&tag=bye

您可以看到tag=hello&tag=bye的副本

此表单没有得到我想要的结果,因为它必须像这样:

tag=hello+bye

wordpress forms form-submit
1个回答
0
投票

此代码对我有用。

// In footer.php
            <script type="text/javascript">
                // Get the selected tags in search
                function getTheCheckedTags() {
                    var items = document.getElementsByName('tags');
                    var selectedItems = "";
                    for(var i=0; i<items.length; i++){
                        if(items[i].type=='checkbox' && items[i].checked==true)
                            selectedItems+=items[i].value+",";
                    }
                    document.getElementsByName('tag')[0].value = selectedItems;
                }
                document.getElementById('searchform').addEventListener('change', getTheCheckedTags);
            </script>
// Don't forget to call the Jquery before this code.
            <script>
            $('#searchform').submit( function(){
              var tags = $('.tags');
              tags.prop('disabled', true);
            });
            </script>
// In searchform.php
<form role="search" method="get" id="searchform" class="skytube-search-form" action="<?php echo home_url( '/' ); ?>">
    <input type="search" placeholder="<?php esc_attr_e( 'Search for what you want...', 'aldoustech' ); ?>" value="<?php the_search_query(); ?>" name="s" id="s" onkeyup="search()">
    <label for="order">الترتيب حسب التاريخ</label>
    <select name="order">
        <option <?php if ($_GET['order'] == 'ASC') { ?>selected="true" <?php }; ?>value="ASC">الأقدم</option>
        <option <?php if ($_GET['order'] == 'DESC') { ?>selected="true" <?php }; ?>value="DESC">الأحدث</option>
    </select>
    <label for="posts_per_page">عدد النتائج المعروضة</label>
    <select name="posts_per_page">
        <option <?php if ($_GET['posts_per_page'] == '10') { ?>selected="true" <?php }; ?>value="10">10</option>
        <option <?php if ($_GET['posts_per_page'] == '50') { ?>selected="true" <?php }; ?>value="50">50</option>
        <option <?php if ($_GET['posts_per_page'] == '100') { ?>selected="true" <?php }; ?>value="100">100</option>
    </select>
    <label for="category_name">التصنيف</label>
    <select name="category_name">
        <option <?php if ($_GET['category_name'] == '') { ?>selected="true" <?php }; ?>value="">
            الكل
        </option>
        <option <?php if ($_GET['category_name'] == 'مسلسلات-أنمي') { ?>selected="true" <?php }; ?>value="مسلسلات-أنمي">
            مسلسلات أنمي
        </option>
        <option <?php if ($_GET['category_name'] == 'مسلسلات آسيوية') { ?>selected="true" <?php }; ?>value="مسلسلات آسيوية">
            مسلسلات آسيوية
        </option>
        <option <?php if ($_GET['category_name'] == 'مسلسلات-الأنيميشن-و-الكرتون') { ?>selected="true" <?php }; ?>value="مسلسلات-الأنيميشن-و-الكرتون">
            مسلسلات الأنيميشن و الكرتون
        </option>
        <option <?php if ($_GET['category_name'] == 'أفلام-أنمي') { ?>selected="true" <?php }; ?>value="أفلام-أنمي">
            أفلام أنمي
        </option>
        <option <?php if ($_GET['category_name'] == 'أفلام آسيوية') { ?>selected="true" <?php }; ?>value="أفلام آسيوية">
            أفلام آسيوية
        </option>
        <option <?php if ($_GET['category_name'] == 'أفلام-الأنيميشن-و-الكرتون') { ?>selected="true" <?php }; ?>value="أفلام-الأنيميشن-و-الكرتون">
            أفلام الأنيميشن و الكرتون
        </option>
    </select>
    <div>
        <?php
            if( $terms = get_terms( array(
                'taxonomy' => 'post_tag',
                'orderby' => 'name'
            ) ) ) : 
                foreach ( $terms as $term ) :
                    echo '<input class="tags" type="checkbox" name="tags" value="' . $term->slug . '"' . (($_GET['tag'] ==  $term->slug)?'checked':"") . '> ' . $term->name;
                endforeach;
            endif;
        ?>
    </div>
    <input type="text" name="tag" value=""> نوع
    <input type="submit" id="searchsubmit" value="<?php esc_attr_e( 'Search', 'aldoustech' ); ?>">
</form>

我自己编写了代码,通过使用javascript将选中的复选框添加到另一个文本字段中,然后通过表格将其数据发送给文本字段,已经解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.