【问题标题】:How to use php and js at the same time to filter content如何同时使用php和js过滤内容
【发布时间】:2019-02-11 11:36:30
【问题描述】:

我正在设置一个过滤栏来根据用户的选择过滤 WordPress 帖子。

当前代码为每个帖子类别提供了反映我所针对的标准的内容。假设 2019 年 2 月发布了一篇帖子。该帖子将包含“FEB”、“2019”,并且其标题带有“_”而不是空格作为附加类别。

当页面加载时,URL 中有参数,所有文章都会消失,然后只会显示那些与 $_GET 参数匹配的类。

我在代码中使用 JS 以及 echo 语句。

由于某种原因它不起作用,如果有人可以指出问题或给我一个更好的替代这个长代码的方法,那就太棒了。

提前致谢!

function filterbar(){

    $current_ID =$_GET['page_id'];

    echo "
        <div class='filterbar containerfluid'>
            <div class='row'>
                <div class='col-12'>";

                    if (get_locale() == 'en_US') {
                        echo "<form action='#' method='get'>
                        <div class='dropdown'>
                            <select name='month'>
                              <option value='all'>By Month</option>
                              <option value='Jan'>January</option>
                              <option value='Feb'>February</option>
                              <option value='Mar'>March</option>
                              <option value='Apr'>April</option>
                              <option value='May'>May</option>
                              <option value='Jun'>June</option>
                              <option value='Jul'>July</option>
                              <option value='Aug'>August</option>
                              <option value='Sep'>September</option>
                              <option value='Oct'>October</option>
                              <option value='Nov'>November</option>
                              <option value='Dec'>December</option>
                            </select>
                         </div>
                         <div class='dropdown'>
                          <select name='year'>
                            <option value='all'>By Year</option>
                            <option value='2018'>2018</option>
                            <option value='2019'>2019</option>
                          </select>
                         </div>
                         <div class='dropdown'>
                          <select name='category'>
                            <option value='all'>All</option>
                            <option value='Excise Tax'>Excise Tax</option>
                            <option value='Corporate Income Tax'>Corporate Income Tax</option>
                            <option value='Withholding Tax'>Withholding Tax</option>
                            <option value='Tax Treaties'>Tax Treaties</option>
                          </select>
                         </div>

                         <input type='text' name='page_id' value=' $current_ID ' style='display: none;'>

                         <input type='text' name='string' value='all' placeholder='Enter keywords'>
                         <input type='submit' value='Filter' class='button'></input>

                     </form>";
                    } else {
                        echo "<form action='#' method='get'>
                        <div class='dropdown'>
                            <select name='month'>
                              <option value='all'>شهريا</option>
                              <option value='Jan'>January</option>
                              <option value='Feb'>February</option>
                              <option value='Mar'>March</option>
                              <option value='Apr'>April</option>
                              <option value='May'>May</option>
                              <option value='Jun'>June</option>
                              <option value='Jul'>July</option>
                              <option value='Aug'>August</option>
                              <option value='Sep'>September</option>
                              <option value='Oct'>October</option>
                              <option value='Nov'>November</option>
                              <option value='Dec'>December</option>
                            </select>
                         </div>
                         <div class='dropdown'>
                          <select name='year'>
                            <option value='all'>سنويا</option>
                            <option value='2018'>2018</option>
                            <option value='2019'>2019</option>
                          </select>
                         </div>
                         <div class='dropdown'>
                          <select name='category'>
                            <option value='all'>بالتصنيف</option>
                            <option value='Excise Tax'>Excise Tax</option>
                            <option value='Corporate Income Tax'>Corporate Income Tax</option>
                            <option value='Withholding Tax'>Withholding Tax</option>
                            <option value='Tax Treaties'>Tax Treaties</option>
                          </select>
                         </div>

                         <input type='text' name='page_id' value=' $current_ID ' style='display: none;'>

                         <input type='text' name='string' value='الكل ' placeholder='Enter keywords'>
                         <input type='submit' value='منقي' class='button'></input>

                     </form>";
                    }



                echo "
            </div>
            </div>
            </div>
    ";

        if(isset($_GET['year']) || isset($_GET['month']) || isset($_GET['string']) || isset($_GET['category']) ){

        if($_GET['year'] != 'all' || $_GET['month'] != 'all' || $_GET['string'] != 'all' || $_GET['category'] != 'all' ){
            echo "
            <script>

                jQuery(document).ready(function($){

                    $( 'article.pressrelease' ).hide();

                });

            </script>

            ";
        }

        if($_GET['year'] != 'all'){

        $filteryear = $_GET['year'];
        echo "
        <script>

        jQuery(document).ready(function($){


        if($( 'article.pressrelease' ).hasClass(" . $filteryear . ")){
            $( 'article.pressrelease' ).show();
        }

        });

        </script>
        ";
    }

        if($_GET['month'] != 'all'){
            $filtermonth = $_GET['month'];
                    echo "
                    <script>

                    jQuery(document).ready(function($){


                    if($( 'article.pressrelease' ).hasClass(" . $filtermonth . ")){
                        $( 'article.pressrelease' ).show();
                    }

                    });

                    </script>
                    ";
            }

    } } add_shortcode( 'filterbarList', 'filterbar' );

【问题讨论】:

  • 当您说它不起作用时,究竟是什么不起作用?我将假设问题是显示所有文章,而不仅仅是具有类 filtermonth 的文章?

标签: javascript php wordpress


【解决方案1】:

在不知道您遇到的确切问题的情况下,最明显的事情是您只需要引用您想要显示的类而不是所有文章。

所以改变

$( 'article.pressrelease' ).show();

$(." . $filteryear . ").show();

另外,qoute 之前的第一个句点应该在那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2012-12-25
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多