分页不使用自定义wp_Query

时间:2013-11-26 作者:dzimidula

我正在尝试制作一个自定义搜索插件,但分页不起作用(它显示的页码正确,但功能不正常)。

搜索插件的相关部分(来自主功能)

    $blog_url = get_bloginfo(\'url\');

    $form = <<<EOH
    <div id="sbc">
    <form method="get" action="{$blog_url}" id="ss-search">
        <input type="text" value="{$search_text}" name="supers" onblur="if (this.value == \'\') { this.value = \'{$search_text}\';}" onfocus=if (this.value == \'{$search_text}\') { this.value = \'\';}" />
        {$list}
        <input type="submit" id="sbc-submit" value="Search" />
    </form>
    </div>
EOH;

///////////////////////////////////

    if (isset($_GET[\'supers\'])) {

        global $q;
        // global $q;
        $args = array(
            // \'category__not_in\' => 1,
            \'s\' => $_GET[\'supers\']
        );

        $q = new WP_Query($args);

        if ( $q->have_posts() ) {
                echo \'<ul>\';
            while ( $q->have_posts() ) {
                $q->the_post();
                echo \'<li>\' . get_the_title() . \'</li>\';
            }
                echo \'</ul>\';
                // echo \'<br>Posts found :\'.$q->found_posts.\'<br><br>\';
                echo get_pagination_links2();
        } else {
            echo \'no posts found\';

        }

        /* Restore original Post Data */
        wp_reset_postdata();
    }

    return $form;

} // end function
$q; // add ability to make it global
函数中的分页函数。php文件

function get_pagination_links2() {
    global $q;
    // echo gettype($q);
    echo $q->found_posts;
    $big = 999999999;

    return paginate_links( array(
        \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
        \'format\' => \'?paged=%#%\',
        \'current\' => max( 1, get_query_var(\'paged\') ),
        \'total\' => $q->max_num_pages,
        \'prev_next\'    => true
    ) );

}
我确实获得了分页链接,但它们不起作用(例如,如果单击“下一步”,URL会更改,但结果不会更改)。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

他们不应该改变。让我们看看您的代码。。。

您将在此处创建自定义查询:

$args = array(
    // \'category__not_in\' => 1,
    \'s\' => $_GET[\'supers\']
);

$q = new WP_Query($args);
正如您所看到的,没有向该查询传递分页参数,因此它将始终显示结果的第一页。

您必须添加此参数。您可以在下面找到代码的固定部分:

$args = array(
    // \'category__not_in\' => 1,
    \'s\' => $_GET[\'supers\'],
    \'paged\' => get_query_var(\'paged\')
);

$q = new WP_Query($args);

结束

相关推荐

Pagination for event query

我正在使用Modern Tribe Events Calendar我的问题是分页。这是对WP\\U查询分页的错误方式,还是有其他方法可以对事件日历分页?我找到了一个tutorial 这使用了WPNavi插件,但我想使用核心wordpress函数。<?php $upcoming = new WP_Query(); $upcoming->query( array( \'post_type\'=> \'tribe_events\', \'eve