我有WP后端设置 - Blog pages show at most
设置为20。
如果用户代理是移动的,我想在PHP中覆盖此设置。
我想到的一种方式是 -
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$ipad = strpos($_SERVER['HTTP_USER_AGENT'],"iPad");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
然后我想做点什么
if ($iphone || $android || $ipad || $ipod || $berry == true)
然后将新的帖子限制设置为10。
无论如何可能吗?
谢谢!
答案 0 :(得分:2)
add_action('pre_get_posts','change_limit_mobile');
function change_limit_mobile($query){
$new_limit = 10;
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$ipad = strpos($_SERVER['HTTP_USER_AGENT'],"iPad");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
if (( $iphone || $android || $ipad || $ipod || $berry ) && $query->is_main_query()){
set_query_var('posts_per_page',$new_limit);
}
}
这会根据所有循环中$new_limit
变量的值覆盖每页的帖子。如果您只想定位主页,那么您也可以在条件中添加if(is_home())
。
答案 1 :(得分:0)
我设法以不同的方式解决它。
在我要限制帖子总数的页面上,我将$new_limit
设置为默认值为20(因为我想要每页20个帖子)。然后,我在移动时添加了条件。
<?php
$new_limit = 20;
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$ipad = strpos($_SERVER['HTTP_USER_AGENT'],"iPad");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
?>
然后限制设置为10,仅限移动设备。
<?php if ($iphone || $android || $ipad || $ipod || $berry == true){
$new_limit = 10;}?>
最后,我将此添加到我的WP_Query
:
'posts_per_page' => $new_limit,
就我测试而言,效果非常好