1

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

Wordpress 自定义帖子类型在现有页面上显示自定义帖子类型列表

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

我已经设法让分页工作“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 正确完成它的方法

4

2 回答 2

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>
于 2012-12-12T22:55:35.567 回答
0

谢谢barakadam,我还没有尝试搜索,但我能够弄清楚order和orderby

我使用 $_GET 来获取 order 和 orderby 的值并将这些变量传递给

于 2012-12-13T07:06:13.747 回答