问题描述
我已经在自定义 WordPress 主题中实现了 Ryan Fait 的 oh-so-common sticky footer 。我现在注意到,如果我将 Wordpress 管理栏实现到我的页面,高达 28 像素 (目前至少 Wordpress 版本),它将粘性页脚也降低了 28 像素。
这是管理员栏:
无论如何,Wordpress 的工作方式是,管理员栏根据管理员用户如何设置自己的偏好设置,不会显示在页面的顶部。所以我不想简单地删除它的主题。
我可以明白地在事件触发后使用 jQuery 来查看管理栏是否存在,并相应地更改页脚,但是如果可能的话,我宁愿尝试避免这种情况,只需让页面生成正确就可以开始… 有任何想法吗?
此外,我想让主题与 near-future 版本的 Wordpress 一起使用。因此,如果在未来的版本中,他们决定将管理栏更改为高于 28 像素高的位置,那么我不希望我的代码被调整以补偿更改。
最佳解决方案
页脚被推出,因为当管理员栏设置为显示时,WP 将向您的页面添加页边距。负责此功能的功能称为_admin_bar_bump_cb()
,位于 wp-includes /admin-bar.php 。坏消息是它使用一个编码为 28 像素的设置 (意味着您将无法获取它并在函数中使用它),以及一个”!important” 声明,您将无法一直重写以避免未来的高度变化。
我想你最好的办法是检查管理员是否正在显示和调整页脚。这应该是简单的添加到您的 functions.php
:
add_action('wp_head', 'adjust_sticky_footer');
function adjust_sticky_footer() {
if(is_admin_bar_showing()) { ?>
<style type="text/css">
.footer { /* Adjust selector according to your theme */
bottom: 28px;
}
</style>
<?php
}
}
我假设您的页脚已经分配了 position: relative
,根据您提供的链接的示例。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。