WordPress分页不适用于搜索页面

时间:2017-08-01 作者:hasan movahed

在“我的搜索”页面中,我的查询返回11个包含此搜索的页面:?q=2&s=chem

但是当我尝试访问第一个页面以外的另一个页面时?q=2&s=chem&paged=2 例如,WordPress显示error not found.

注意:如果我在URL中保留空的s变量,则没有问题。

这是我的WP_Query :

$args = array(

\'number\' => $number,
\'offset\' => $paged ? ($paged - 1) * $number : 0,
\'s\' => $_GET[\'s\'],
\'meta_query\' => array(
    \'relation\' => \'OR\',
    [
        \'key\'          => \'comp_name\',
        \'value\'        => $_GET[\'s\'],
        \'compare\'      => \'LIKE\'
    ]
),);
有人知道如何解决这个问题吗?

1 个回复
最合适的回答,由SO网友:Shahrokhian 整理而成

默认情况下,wordpress在搜索页面中有自己的主查询,在您的情况下,您没有更改主查询,只创建一个自定义查询

paged是主查询首先使用的保留查询变量,当主查询的结果相同时,您将面临404错误。您有3个选择:

1. change paged variable

您可以将页面变量从paged重命名为page或wordpress默认不使用的其他名称

2. override 404 page

function override_404() 
{
    if ( is_search() && isset($_GET[\'s\'])) {
        global $wp_query;
        $wp_query->is_404 = false;
    }
}
add_action(\'init\', \'override_404\');

3. override main query ( best )

function change_search_query() {
    if ( is_search() && isset($_GET[\'s\'])) {
        $args = array();
        query_posts( $args );
    }
}
add_action(\'init\', \'change_search_query\');

结束

相关推荐

如何运行位于站点根文件夹中的.php文件?

我正在尝试将自定义帖子类型中的一些数据转换为Wordpress数据库中的自定义表。我已经编写了一个PHP程序来实现这一点。它要求加载Wordpress,以便我可以使用Wordpress的一些数据库访问方法($wpdb)。我已将转换文件放置在我的站点的根目录中,其中索引。php驻留,但当我尝试运行它时http://my-site.dev/convert.php/ 我得到一个404页未找到错误。如何配置Wordpress或我的服务器(我在本地使用桌面服务器进行开发)来运行此程序?