限制使用移动设备访问时的帖子

时间:2015-11-07 作者:Michael

我在Stackoverflow上发现了以下内容:https://stackoverflow.com/questions/21135388/wordpress-change-the-limit-of-the-number-of-posts-just-for-mobile

我实现了答案,但没有成功。我正在使用AccessPress Mag模板,较大屏幕上的帖子数量设置为无限制。

这是我尝试的代码:

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);
    }
}
我尝试将其添加到函数中。php和索引。php页面,但运气不好。

自最新更新以来,是否有任何更改,或者我是否遗漏了一些内容?

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

Original answer: 您可以通过下载来尝试使用MobileESPhttps://raw.githubusercontent.com/ahand/mobileesp/master/PHP/mdetect.php 转到主题目录,然后:

function change_limit_mobile( $query ) {
    if ( $query->is_main_query() ) {
        require get_stylesheet_directory() . \'/mdetect.php\';
        $mdetect = new uagent_info;
        if ( $mdetect->DetectMobileLong() ) {
            set_query_var( \'posts_per_page\', 10 );
        }
    }
}
Update: 最简单的就是使用wp_is_mobile() - 可能足够好了!

Theme-specific update: 在您使用的主题AccessPress Mag中,它使用自己的选项来控制特殊主页块循环中的帖子数量。覆盖这些选项的一种方法是在“functions.php”中定义自己版本的可插入主题框架选项函数:

function of_get_option( $name, $default = false ) {

    $option_name = \'\';

    // Gets option name as defined in the theme
    if ( function_exists( \'optionsframework_option_name\' ) ) {
        $option_name = optionsframework_option_name();
    }

    // Fallback option name
    if ( \'\' == $option_name ) {
        $option_name = get_option( \'stylesheet\' );
        $option_name = preg_replace( "/\\W/", "_", strtolower( $option_name ) );
    }

    // Get option settings from database
    $options = get_option( $option_name );

    // Return specific option
    if ( isset( $options[$name] ) ) {
        /******* Addition Begin *******/
        // NOTE: Can add other options here...
        if ( \'posts_for_block1\' === $name ) {
            return change_limit_mobile( $options[$name] );
        }
        /******* Addition End *******/
        return $options[$name];
    }

    return $default;
}
在哪里change_limit_mobile() 现在是:

function change_limit_mobile( $value ) {
    if ( wp_is_mobile() ) {
        $value = 10;
    }
    return $value;
}

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请