簡體   English   中英

Wordpress更改了僅適用於移動設備的帖子數限制

[英]Wordpress change the limit of the number of posts just for mobile

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

無論如何可能嗎?

謝謝!

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())

我設法以不同的方式解決它。

在我想限制帖子總數的頁面上,我將$new_limit設置$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,

就我測試而言,完美地工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM