如何使用条件标签切换此样式表?

时间:2015-07-08 09:21:22

标签: javascript php if-statement conditional-statements

我的网站运行正常,但我想根据我的新要求略微更改我的if else条件。 现在我认为这不是关于wordpress,而是关于如何改变一些PHP conditional tags。 所以我在这里问。

我以前的要求是:

  1. 如果网站已在移动网站上加载,我必须显示一个按钮 当它被点击时,该网站应该排队一个名为的样式表 responsive.css
  2. 当网站(移动中)响应时,应该是另一个按钮 显示在单击按钮时切换到默认style.css。
  3. 我按下以下按钮:

    <div class="cr-athavan-lang-image">
        <a href="?site=mobile" class="mobile_site" id="mobile_site"><img src="file/path/to/img" alt="switch to mobile site"></a>
        <a href="?site=desktop" class="desktop_site"><img src="file/path/to/img" alt="switch to desktop site"></a>  
    </div>
    

    style.css

    .desktop_site { display: none; }  /* Hiding switch to desktop site button if the site is loaded on desktop */
    

    responsive.css

    .desktop_site { display: block; margin-top: 5px; } /* bring back switch to desktop site button if the site is loaded on mobile */
    

    我的functions.php

    <?php
    if ( !wp_is_mobile() ) { // to hide mobile switching button on desktop site 
        function print_inline_script_hide_site_switch() {                   
            ?>
            <script type="text/javascript">     
                jQuery('.mobile_site').hide();                                              
            </script>
            <?php                 
        }
        add_action( 'wp_footer', 'print_inline_script_hide_site_switch' );
    }
        else {              
            add_action('init', 'is_it_mobile_or_desktop', 1);
            function is_it_mobile_or_desktop(){
                if (isset($_GET['site']) && in_array($_GET['site'], array('mobile', 'desktop'))){
                    setcookie( 'site', $_GET['site'], time() + 3600, COOKIEPATH, COOKIE_DOMAIN);
                }
            }
    
            add_action('init', 'who_am_i', 2);
            function who_am_i(){
    
                $site = isset($_GET['site']) && in_array($_GET['site'], array('mobile', 'desktop')) ?  $_GET['site'] : 
                        (isset($_COOKIE['site']) && in_array($_COOKIE['site'], array('mobile', 'desktop'))  ? $_COOKIE['site'] : 'default_css');
    
                if ($site == 'mobile'){
                    function responsive_css(){
                        wp_enqueue_style(
                            'wpa_custom',
                            get_template_directory_uri() . '/css/responsive.css'
                        );
                    }
                    add_action( 'wp_enqueue_scripts', 'responsive_css', 999 );
    
                    function print_my_inline_script() {                 
                        ?>
                        <script type="text/javascript">
                        /*My inline scripts*/                                               
                        </script>
                        <?php                 
                    }
                    add_action( 'wp_footer', 'print_my_inline_script' );
    
                } 
                else {
                    function default_css(){
                        wp_enqueue_style(
                            'default_css',
                            get_template_directory_uri() . '/style.css'
                        );
                    }
                    add_action( 'wp_enqueue_scripts', 'default_css', 999 );
                }
            }
        }
    ?>
    

    这就是我实现旧要求并正常工作的方式。第1和第1期没有任何问题第二项要求

    现在我已经更新了要求:

    1. 默认情况下,如果用户来自,则应加载无响应的网站 桌面
    2. 默认情况下,如果用户来自,则应加载响应式网站 移动
    3. 如果用户点击移动设备上的桌面切换按钮 (响应式)站点,应该加载非响应式站点 移动。
    4. 如果用户点击移动设备上的移动切换按钮 (无响应)网站,应加载响应式网站。
    5. 总结:

      1. 如果网站已在移动设备上加载,则应将样式表排入队列 style.css并应显示button desktop_site

      2. 如果用户点击button desktop_site,那么它应该排队 responsive.css并应显示button mobile_site

      3. 如果用户再次点击mobile_site button,它应该排队 style.css并应显示button desktop_site

      4. 我认为它几乎只是if else condition changes但我无法解决。

        请提出建议和解决方案....

1 个答案:

答案 0 :(得分:1)

我认为这个问题与你的一个wordpress交换问题有关:wordpress.stackexchange.com/questions/193813/how-to-switch-css-files-according-to-devices-and-button-click/ < / p>

是的,因为您认为解决方案在if声明中:

更改

if (($site == 'desktop'){ // code line }

if (($site == 'desktop') && (wp_is_mobile())) { // code line }