Wordpress:自定义帖子类型过滤,排序和搜索

时间:2012-12-12 22:12:48

标签: wordpress filter custom-post-type

我使用自定义帖子类型在页面上显示一些信息。

Wordpress Custom Post type displaying list of custom post type on existing page

有没有办法为数据添加过滤,排序和搜索功能?

我设法让分页工作“domain.com/page/2”

 $the_query = new WP_Query(array('post_type' => 'custom_post_type', 'posts_per_page' => 25, 'paged' => $paged, 'orderby'=>'title', 'order' => 'ASC'));

我正在使用jquery DataTable(http://datatables.net/)来添加排序,分页和搜索,但是当您在1000多条记录上使用Datatable时,它会变得非常迟缓,有时会显示有关内存不足的php错误。 这总是一个临时解决方案,直到我找到了一种使用Wordpress正确完成它的方法

2 个答案:

答案 0 :(得分:0)

您提到了一个用于对数据进行排序的jQuery工具,但这对于来自数据库的数据来说并不是一个好主意。 jQuery排序工具用于使表更具可读性,并帮助用户使用已在页面上显示的数据。对于数据库,这个想法更多的是只获取所需的数据而不是获取页面中的所有内容然后对元素进行排序或过滤以使它们脱离视图(但仍然在页面中,这意味着它更重,下载时间更长,更难处理等)。 您已设法为自定义帖子类型实现分页,这样就可以了。现在只需添加一个搜索表单。默认的WordPress搜索表单(searchform.php)如下所示:

            <form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
                <div><label class="screen-reader-text" for="s">Search for:</label>
                    <input type="text" value="" name="s" id="s" />
                    <input type="submit" id="searchsubmit" value="Search" />
                </div>
            </form>

您只需在其中添加一条线就可以将搜索范围限制为自定义帖子类型:

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

所以它会是这样的:

            <form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
                <div><label class="screen-reader-text" for="s">Search for:</label>
                    <input type="text" value="" name="s" id="s" />
                    <input type="submit" id="searchsubmit" value="Search" />
                    <input type="hidden" name="post_type" value="name_of_your_post_type" />
                </div>
            </form>

答案 1 :(得分:0)

谢谢barakadam,我还没有尝试搜索,但我能够找出订单和订单

我使用$ _GET来获取order和orderby的值,并在

中传递这些变量