web-dev-qa-db-ja.com

Wordpressの管理者バーがスティッキーフッターをページ下部から押し出しました

私はRyan Faitの非常に一般的な スティッキーフッター をカスタムWordpressテーマで実装しました。私は自分のページにWordpressの管理バーを実装すると気付きました。それは28pxの高さです(少なくとも現在のWordpressのバージョンでは...)、それは同様に28pxの下に固定フッターをプッシュします。

これが管理バーです。

enter image description here

とにかく、Wordpressのしくみは、管理者ユーザーが自分の設定をどのように設定しているかに応じて、管理バーがページの上部に表示されるかどうかということです。だから私は単にテーマからそれを削除したくはありません。

Readyイベントが発生した後にjQueryを使用してAdmin Barが存在するかどうかを確認し、それに応じてフッターを変更することもできますが、可能であればこれを避けてページを正しく生成するようにしてください。何か案は?

また、このテーマが近い将来のバージョンのWordpressでも機能するようにします。そのため、将来のバージョンで管理者バーを高さ28ピクセル以外に変更することにした場合、その変更を補うためにコードを調整する必要はありません。

7
Jake Wilson

管理バーが表示に設定されているときはいつでもWPがページに余白を追加するため、フッターが押し出されます。これを担当する関数は_admin_bar_bump_cb()と呼ばれ、wp-includes/admin-bar.phpにあります。悪い知らせは、それが一貫してオーバーライドすることができない "!important"宣言と共に、ハーコードされた28px設定(あなたがそれをフェッチしてあなたの関数でそれを使うことができないことを意味する)将来高さの変化を避けるために。

私はあなたの最善の策は管理バーがそれに応じてフッターを表示して調整しているかどうかをチェックすることだろうと思います。これはあなたの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が割り当てられていると思います。

5
Tomas Buteler