【发布时间】:2015-09-26 02:46:30
【问题描述】:
我的网站运行良好,但我想根据我的新要求稍微更改 if else 条件。
现在我认为这不是关于wordpress,而是关于如何改变一些PHP conditional tags。
所以我在这里问。
我之前的要求是:
- 如果网站是在移动网站上加载的,我必须显示一个按钮,然后 当它被点击时,该站点应该排队一个名为的样式表 responsive.css
- 当网站(移动)响应时,另一个按钮应该是 显示为在单击按钮时切换到默认 style.css。
我放了以下按钮:
<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 );
}
}
}
?>
这就是我实现旧要求并正常工作的方式。第一个和第二个要求没有任何问题
现在我更新了要求:
- 默认情况下,如果用户来自 桌面
- 默认情况下,如果用户来自 移动
- 如果用户从移动设备单击桌面切换按钮 (响应式)站点,非响应式站点应加载到 移动。
- 如果用户从移动设备点击移动切换按钮 (非响应式)网站,应加载响应式网站。
总结:
如果网站是在移动设备上加载的,它应该将样式表排入队列
style.css应该显示button desktop_site如果用户点击
button desktop_site,那么它应该排队responsive.css应该显示button mobile_site如果用户再次点击
mobile_site button,它应该排队style.css并且应该显示button desktop_site
我认为它几乎只是if else condition changes,但我无法解决。
请提出建议和解决方案....
【问题讨论】:
-
您似乎要求访问者单击一个按钮,以便 CSS 隐藏或显示元素以使它们“响应”。为什么不使用媒体查询?
-
这就是我一开始就向我的客户提出的建议。但是当用户从桌面访问时,他们仍然想要网站的非响应版本
-
(旁白:在帖子中添加投票评论没有任何价值 - 大多数不赞成投票的人不会在那里看到它,并且它不会阻止希望投票反对的人。我已将其删除,因为它通常只是大多数读者不感兴趣的绒毛。如果您真的想对人们的投票说些什么,请使用评论 - 即使那样我也不会打扰。谢谢)。
标签: javascript php if-statement conditional-statements