问题描述

我已经在自定义 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。