問題描述

我已經在自定義 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。