在Wordpress子主题中添加PHP到style.css

时间:2015-01-29 17:36:38

标签: php css wordpress

我试图通过以下方式实现相对简单的事情:

如果用户未登录,请将其添加到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。

提前致谢,

2 个答案:

答案 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;
   }