$args numberposts variable

时间:2015-01-29 作者:Eduardo Roxius

$args = array( \'numberposts\' => \'10\', \'post_type\' => \'newposttype\');
$recent_posts = wp_get_recent_posts( $args );
我知道这不是一件简单的事,但我如何根据屏幕宽度设置数字成本呢?

也就是说:对于桌面访问者,我显示10篇帖子;对于移动访问者,我显示3篇帖子。

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

是的,PHP无法获得屏幕大小,因为它运行在服务器上,而屏幕与客户端(浏览器)相关。

然而,在OP中,你说:

对于desktop 访客我展示了10篇帖子mobile 访客I显示3个帖子

即使您无法获得屏幕大小,您也可以理解请求是否来自移动设备,这要感谢wp_is_mobile():

$number = 10;
if (wp_is_mobile()) {
  $number = 3;
}
$args = array( \'numberposts\' => $number, \'post_type\' => \'newposttype\');
$recent_posts = wp_get_recent_posts( $args );
有如下PHP库Mobile Detect 这给了您更多的控制,例如,您可以将平板电脑与手机区分开来。

因此,如果帖子编号的选择可能取决于移动/非移动设备,那么如上所述,如果选择必须取决于实际屏幕宽度,那么就可以轻松完成,唯一的解决方案是AJAX。

搜索此网站(开始here) 查找有关如何使用AJAX获取帖子的指导。

SO网友:jetlej

使用PHP无法确定屏幕大小(要更改该变量,需要这样做)。

因此,您有两种选择:

1) Easy: Use responsive CSS to hide posts 4-10 on smaller screens

在循环中,在第三篇帖子之后的任何帖子中添加一个条件类,如下所示:

<?php
$count = 0;
$args = array( \'numberposts\' => \'10\', \'post_type\' => \'newposttype\');
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
    $count ++; ?>
    <div class="<?php if($count < 3) echo \'hidden-xs\'; ?>"><a href="<?php echo get_permalink($recent["ID"]); ?>"><?php echo $recent["post_title"]</a></div>
    <?php 
} ?>
然后在媒体查询中添加css类,仅当屏幕小于X像素时才隐藏该类。

@media (max-width: 600px) {
    .hidden-xs{display:none;}
}

2) Harder: Load the posts via AJAX so you can use Javascript to determine the screen width and then request the matching number of posts.

我不会详细讨论这个问题,因为第一个选项应该足够了。

结束