我正在尝试制作一个自定义搜索插件,但分页不起作用(它显示的页码正确,但功能不正常)。
搜索插件的相关部分(来自主功能)
$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会更改,但结果不会更改)。
最合适的回答,由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);