我试图通过以下方式实现相对简单的事情:
如果用户未登录,请将其添加到style.css:
div.em-booking {
display: none;
}
如果用户登录: 不要修改style.css
所以我怀疑是否有一些CSS + PHP可以解决这个问题:
div.em-booking {
<?php
if (!is_user_logged_in() )
echo 'display: none';
?>
}
我发现了这个:Accessing global variable in "CSS" (style.php) 这看起来非常有用 - 只需将附加的embedded_style.php文件@import输入到style.css文件中。但这看似无效。我看到那个帖子已经很老了(2011),也许Wordpress已经发生了很大变化,以至于它已经不再适用了。
我已经阅读了许多更改.htaccess文件以强制网站读取PHP文件而不是CSS文件的方法,但这种技术是否适用于Wordpress主题+子主题网站,该网站有两个style.css文件(父主题+儿童主题)?
碰巧,我的Wordpress网站的父主题(我怀疑)已经被它的开发者抛弃了,所以它不太可能会有更新,所以我想我可以修改父主题的style.css来成为样式.php并直接在那里添加我的修改。但我更愿意单独留下父样式.c文件。
非常欢迎任何想法/建议!如果在Stackoverflow中的某个地方之前已经回答了这个问题,我会道歉,但是当我在CSS中添加PHP时,我找不到任何特定于Wordpress的内容。大多数建议都涉及修改静态网站的HTML,由于许多文件访问了style.css,因此(我假设)不会使用Wordpress。
提前致谢,
保
答案 0 :(得分:1)
将任何PHP代码插入CSS是不可能的。你必须做相反的事情:
if (!user_is_logged_in()) {
echo '<div style="display: none"></div>';
} else {
echo '<div></div>';
}
但这不安全,因为任何人在查看HTML源代码时都会看到它。这样做:
if (user_is_logged_in()) {
echo '<div>you are logged in</div>';
} else {
//show nothing or a message that someone is not logged
}
答案 1 :(得分:1)
为什么不根据CSS类定位代码?假设你的主题支持附加到身体类,这通常是默认和最佳实践,你应该有logged-in
。
示例:<body class="home page page-id-2238 page-template page-template-template-home page-template-template-home-php logged-in admin-bar no-customize-support">
.logged-in .em-booking {
display: block; /* whatever your set default is */
}
.em-booking {
display: none;
}