我尝试在 wordpress 网站上制作自己的搜索表单。得到我想要的结果是没有问题的,但是不能让 paginate_links 工作。
我测试了 WP_Query 的所有输入和输出参数,一切看起来都还可以。paginate_links 的输入是 775 个结果,给出 16 个页面和 50 个产品标题。
问题:所有页面都给出与第 1 页相同的结果。我都准备好了做什么:发布到 wordpress 论坛,但现在提示在 3 天。测试了所有参数。使用 add_hook 将 get_col reflect 合并到 WP_Query 中。检查永久链接和分页。
global $wpdb;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if ($paged == 1) {
$Limit = "50";
} else {
$FirstPage = ($paged-1)*50;
$LastPage = $paged*50;
$Limit = $FirstPage.",".$LastPage;
}
$term = get_term_by('name', $_REQUEST["product_cat"], 'product_cat');
// echo "id". $term->term_id;
$mypostids = $wpdb->get_col("select * from $wpdb->posts, $wpdb->term_relationships
where $wpdb->posts.post_title LIKE '".$_REQUEST["start_letter"]."%'
AND $wpdb->posts.post_type='product'
AND $wpdb->term_relationships.term_taxonomy_id=".$term->term_id."
AND $wpdb->term_relationships.object_id=$wpdb->posts.ID
AND $wpdb->posts.post_excerpt LIKE '%".$_REQUEST["product_tag"]."%'
ORDER BY $wpdb->posts.post_title asc ");
$argssearch = array('post__in'=> $mypostids,
'post_type'=>'product',
'orderby'=>'title',
'order'=>'asc',
'posts_per_page'=>50,
'product_tag'=>urldecode( $_REQUEST["product_tag"]),
'product_cat'=>urldecode( $_REQUEST["product_cat"]),
'paged=' => $paged);
$querysearch = new WP_Query($argssearch);
echo "<br/>-".$querysearch->found_posts."-".$paged."<br/>" ;
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '',
'current' => max( 1, get_query_var('paged') ),
'total' => $querysearch->max_num_pages,
'add_args' => array('start_letter'=>$_REQUEST["start_letter"],
'product_tag'=>urlencode ($_REQUEST["product_tag"]),
'product_cat'=>urlencode ($_REQUEST["product_cat"]),
'ZOEK' => 'Zoek'
) ));