1

我有 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。

反正有可能吗?

谢谢!

4

2 回答 2

3
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())条件。

于 2014-01-15T13:13:03.643 回答
1

我设法以不同的方式解决了它。

在我想限制帖子总数的页面上,我将$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,

据我测试,完美运行

于 2014-01-16T10:00:35.090 回答