• 解決済 ryokucha_power

    (@ryokucha_power)


    WordPressで作成したサイトのヘッダー上部に、15px程度の原因不明な空白が入ってしまいます。
    (CSSで、header上部のマージンは0にしてあります)

    おおまかに言うと下記のような構成になっておりまして、
    index
    ├カテゴリー1 ─ 記事
    └カテゴリー2 ─ 記事
    全て同じheader.phpを使用しています。

    indexとカテゴリー1では、header上部に空白は入らないのですが、カテゴリー1の記事&カテゴリー2とその記事には入ります。

    header.phpや該当ページのテンプレートを見直してみても、空白が入ってしまうような原因が見当たりません。

    同じheader.phpを読み込んでいるのに、違いが出てしまうのは何が原因なのでしょうか?

    わかる方がいらっしゃいましたら、回答お願い致します。

      

15件の返信を表示中 - 1 - 15件目 (全16件中)
  • header.phpが同じだとすれば、原因は他にあるのかもしれないですね。
    カテゴリー1とカテゴリー2のテンプレート(index.phpあるいはcategory.phpなど)も同じですか?

    恐らく“DOM(文字コードの情報らしい)”とか言うのが原因だと思います。
    管理画面からテーマの編集でheader.phpを開くと、一番最初にピリオドが無いですかね?
    あればそれを削除すれば空白はなくなったような気がするので確認してみてください。

    こんにちは

    WordPressは、index.phpのところまでで、かなりのファイルをインクルードしています。
    それらの中に、phpコードの外側の改行などが、先頭行の空白を発生させることがあります。

    手っ取り早く、試してみるなら PHP関数でバッファを消去する方法もあります。

    <?php
    /**
    * The xhtml1.0 transitional header for our theme.
    *
    *
    * @package WordPress
    * @subpackage Raindrops
    * @since example 0.1
    */
    ob_end_clean();
    get_header(); ?>

    http://php.net/manual/ja/function.ob-end-clean.php

    ただ、バッファをクリアする方法は、バッファがなんかの都合で出なくなった時に、エラーを出します。

    pluginやfunctions.phpのphpの外側の空白や改行を探して除去するのが一番いいとは思います

    多分ですけど 3.1にアップグレード後にログインしたままで観覧していたのでしょうか?
    もし ログインしたまま観覧しているとヘッダー上部に 同じような空白が出来ますけど、ログアウトすれば空白はなくなりますね。

    憶測ですが 管理画面に何かを繋げる機能が追加されたのではと思います。

    再現しますね。
    条件はわかりませんが、wp_headのアクションで’_admin_bar_bump_cb’が追加され、
    結果的にheadタグ内に
    ————————————-
    <style type=”text/css”>
    html { margin-top: 28px !important; }
    * html body { margin-top: 28px !important; }
    </style>
    ————————————-
    が、追加されて空きが生じているようです。

    とりあえずの対処方法は、header.phpなどでwp_head()を呼ぶ前に
    そのアクションを削除すればいいようです。
    ————————————-
    if ( has_action( ‘wp_head’, ‘_admin_bar_bump_cb’ ) )
    remove_action(‘wp_head’, ‘_admin_bar_bump_cb’ );
    wp_head();
    ————————————-

    こうなる原因までは調査できていません。
    取り急ぎ。

    3.1の管理バーが表示される部分じゃなくてですか?
    wp_foot()
    が無いとそうなるけど、それとは違うものですかね?

    さきほど昨日追加した次の2行を

    if ( has_action( 'wp_head', '_admin_bar_bump_cb' ) )
    remove_action('wp_head', '_admin_bar_bump_cb' );

    をコメント化してみたのですが、もうcssは出力されなくなっていました。

    自動アップデート直後は何かのフラグが立たなくて、ログインし直すとフラグが立つみたいな感じなんですかね。

    ログインすると、ということならなおさらそうです。
    3.2は、デフォルトでログイン中には画面上部に管理用のツールバー(Admin bar)が出ます。
    フッタがきちんと記述されていないとそこが抜けます。

    自己レスです。
    kvexさんのおっしゃる通り、3.1の新機能の管理バーが影響しているのですね。
    自分のところの独自テーマではwp-headは呼んでいましたが、wp-footを呼んで
    いなかったので、wp-headで管理バーのcss部分のみが出力され、本来wp-footで
    出力される#wpadminbarのコードが出力されず、その部分が空いた状態になった
    ようです。

    自分的にはすっきりできたのですが、もしかするとryokucha_powerさんの質問
    とは違った内容で、このスレッドを汚してしまったかも知れません。
    ryokucha_powerさん > 大変失礼しました。

    トピック投稿者 ryokucha_power

    (@ryokucha_power)

    皆様、色々ありがとうございます。

    ここに来て、先日まで通常表示されていたトップページ(index)等の上部にも空白が出来るようになってしまいました。(どこも弄ってはおりません)

    カテゴリー1(これまで通常表示だった)とカテゴリー2のテンプレートは、同じではありませんが、違いといってもほんの少しで(読み込む画像が違う等)レイアウト等は同じです。(CSSのクラス等も同じです)

    文字コードの問題かとも考え、色々変更してみましたが直らず。
    ちなみに、header.phpの初めにはピリオドや無駄な空白等は入っておりません。
    他のテンプレphpを何度見直しても、無駄な空白等は入っておりません。

    また、tmatsuur様の仰る辺りも試してみましたが、解決に繋がらず……。

    他のサイト(WP構築)では、このような現象は起きていないので、一度WPをインストールし直して、リセットした状態から原因を探ってみようと思います。

    皆様、色々ありがとうございました。

    いや、ですからwp_foot()だと、何度も申し上げてるんですけど・・・

    また、tmatsuur様の仰る辺りも試してみましたが、解決に繋がらず……。
    これは具体的に何をおっしゃられているのかが、見ている側からはわからないです。

    teatime

    (@t-tanosandocnnejp)

    私もこの問題を解決したくて試していたのですが、やはり『管理バー』が影響しているようでした。ユーザー設定の『管理バーの表示』で『サイトを表示する際』のチェックがデフォルトで入りになっているため、ログインしている時に限りこの空白が出現するようです。
    通常ならこれで解決なんですが、私の場合は複数ユーザーの使うサイトでもこの問題を解決したいため、デフォルトでこのチェックを外しておく必要があるようです。
    この方法があればご教授のほどお願いします。

    以下、チェックをはずす手順です。
    ━━━━━━━━━━━━━━━━━━━━━━━━━
    サイドバーのユーザー

    あなたのプロフィール

    『管理バーの表示』で『サイトを表示する際』
    のチェックをはずす

    更新
    ━━━━━━━━━━━━━━━━━━━━━━━━━
    で、このユーザーのみは解決するようです。

    管理バーの表示のチェックをデフォルトで消すには、テーマの関数に

    add_filter( 'show_admin_bar', '__return_false' );

    と記述すればOKです。

    teatime

    (@t-tanosandocnnejp)

    fastechさん
    function.phpに、教えていただいたコードを追加することで、あっさり解決しました。
    ありがとうございました。

15件の返信を表示中 - 1 - 15件目 (全16件中)
  • トピック「header上部に謎の空白」には新たに返信することはできません。