我正在将产品列表加载到存档类型页面上,并创建一个自定义查询。我想创建一个“加载更多”功能,以便单击列表底部的“加载更多”按钮加载接下来的10个产品。
我认为这就像使用变量设置“posts\\u per\\u page”一样简单,只需在单击按钮时将其增加10。然而,我得到了奇怪的结果。这段代码不是最终的代码,只是为了说明这个问题。
if(isset( $_POST[\'load-next-amount\'] )){
$pageamount = 10
}
else {
$pageamount = 5;
}
因此,第一次加载时,它将解析为false,因为按钮还没有被单击,所以posts\\u per\\u page将设置为5。然后,当单击按钮时,您预计将加载10,但由于某些原因,它将继续加载5。但是,如果我将代码更改为:
if(isset( $_POST[\'load-next-amount\'] )){
$pageamount = 4
}
else {
$pageamount = 5;
}
它将加载4。因此,我无法通过此变量增加每页的posts\\u数量,但我可以减少它。奇怪的
以下是我的疑问:
$myArgs = array(
\'category\' => \'\',
\'category_name\' => \'\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\',
\'include\' => \'\',
\'exclude\' => \'\',
\'meta_key\' => \'_price_per_1hr_lesson\',
\'meta_value\' => \'\',
\'post_type\' => \'job_listing\',
\'post_mime_type\' => \'\',
\'post_parent\' => \'\',
\'post__in\' => $what,
\'author\' => \'\',
\'author_name\' => \'\',
\'post_status\' => \'publish\',
\'job_listing_region\' => "\'" . $city . "\'",
\'post_status\' => \'publish\',
\'posts_per_page\' => $pageamount,
\'suppress_filters\' => true
);
$myquery = new WP_Query( $myArgs );
更新:使用print\\r,我可以看到正确的值被分配给变量,并且该值被正确分配给“posts\\u per\\u page”。无论出于何种原因,它都会忽略它,除非它小于先前指定的值。例如,如果我将else语句设置为$pageamount=20,则第一次加载页面时将有20个,然后如果我单击按钮(将变量发送到脚本,即10),则将加载10个。只要少于20篇,它就可以加载任意数量的帖子。
很明显,WP中有设置默认值之类的东西。对WP来说还是有点新手,所以我不知道。看着wp\\U配置,我什么都没看到。
最合适的回答,由SO网友:nibnut 整理而成
好吧,我想我知道发生了什么。。。
根据WP pagination parameters 文档,posts\\u per\\u页确实是缓存的。有点基本上,您可以在第一次将其设置为“10”,然后再设置为5,但随后使用“offset”或“paged”参数来获取所需的帖子。
您的“load next amount”变量只是一个计数器,您想访问其中的“offset”或“page”。。。
使用偏移量,您可以传递等于“0”、“1”、“2”和。。。
$myArgs = array(
\'category\' => \'\',
\'category_name\' => \'\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\',
\'include\' => \'\',
\'exclude\' => \'\',
\'meta_key\' => \'_price_per_1hr_lesson\',
\'meta_value\' => \'\',
\'post_type\' => \'job_listing\',
\'post_mime_type\' => \'\',
\'post_parent\' => \'\',
\'post__in\' => $what,
\'author\' => \'\',
\'author_name\' => \'\',
\'post_status\' => \'publish\',
\'job_listing_region\' => "\'" . $city . "\'",
\'post_status\' => \'publish\',
\'posts_per_page\' => 10, // <--------
\'offset\' => 10 + (intVal($_POST[\'load-next-amount\']) * 5), // <--------
\'suppress_filters\' => true
);
$myquery = new WP_Query( $myArgs );
希望这有帮助!