我应该先检测设备还是先检测页面?

时间:2016-11-27 作者:M. Sundstrom

我想知道最好的做法是什么,如果它真的重要的话。我应该首先检测设备并将页面块包围在设备块内部还是相反?

设备检测器基于:https://github.com/serbanghita/Mobile-Detect, Mobble插件。

设备块:

<?php if ( is_mobile() ) { ?>
  mobile
<?php } elseif ( is_tablet() ) { ?>
  tablet
<?php } else { ?>
  computer
<?php } ?>
页面块:

<?php if ( is_home() ) : ?>
  blogpage
<?php elseif( is_page() ) : ?>
  pages
<?php elseif( is_single() ) : ?>
  posts
<?php elseif ( is_category() or is_tag() ) : ?>
  category- or tag-pages
<?php endif; ?>
例如:

<?php if ( is_mobile() ) { ?>

  <?php if ( is_home() ) : ?>
    blogpage
  <?php elseif( is_page() ) : ?>
    pages
  <?php elseif( is_single() ) : ?>
    posts
  <?php elseif ( is_category() or is_tag() ) : ?>
    category- or tag-pages
  <?php endif; ?>   

<?php } elseif ( is_tablet() ) { ?>

  tablet

<?php } else { ?>

  computer

<?php } ?>

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

暂时不考虑那些告诉你要避免使用用户代理的评论(因为它们很容易出错,并且在某些设备上可能会失败——正如你从插件上不断出现的bug修复中所看到的那样),对于你狭义的问题,答案是:没关系。

如果A和B彼此独立,就像在本例中一样,那么if A then if B do Cif B then if A do Cif (A and B) do C.

如果在检查用户代理时需要花费大量的处理时间,并且存在一个页面条件,您不需要为移动设备使用不同的版本,则情况可能会有所不同。但正如您所说的,在开始做某事之前,您总是必须检查用户代理和页面类型。那么顺序就无关紧要了。

相关推荐

Change menu for mobile

我正在WordPress网站上工作,我试图根据设备显示不同的菜单(桌面与移动)。为了做到这一点,我在标题中添加了一些代码。php文件:<?php if(wp_is_mobile()){ wp_nav_menu( array( \'menu\' => \'secon