このサイトではないのですが、WPで運営している自サイトの一つを、
先日公開された WordPress3.1 に更新した所、デザインが微妙に崩れました。

そのサイトは自分で書いたテンプレートを使用している為、WP更新の際に新しいコードが付加されたり、
以前使用されていたコードが使用されなくなったりで、サイトが微妙におかしくなる事は稀にあるのですが、
今回はwp_headによって、ヘッダ内に自動で追加されたインラインスタイルの記述が原因でおかしくなった様子。

更新するまでは特に何もなかった筈・・と思って更新前のサイトのソースと見比べてみると、
以下のコードが新たに追加されていました。

更新前
WP更新前

更新後(色つきの部分が追加された記述)
WP更新後

崩れる原因は「margin-top:28px」というスタイルの記述で、importantなんて指定されていて、非常に鬱陶しいです。
自分的にはインラインスタイルなんて要りませんし、必要があれば自分でかくのに・・
と思うのですが、こういう余計なお世話がWordPressには複数存在します。

私は面倒なので、放ったらかしにしている記述も多いのですが、
今回の更新のように見た目が変わるとなると放っておく事も出来ず・・

で、ヘッダ内の「wp_head」によって、このソースが自動追加されるので、
「wp_head」がなければと単純に思うのですが、wp_headを消すと色々と不都合が起こるので消す事は出来ません。

なので、wp_headについての記述があるdefault-filters.phpの内容を元に、
不必要なものを省くコードをfunctions.php内に記述します。



【default-filters.php内のwp_headに関わる記述】

// Actions
add_action( 'wp_head',             'wp_enqueue_scripts',            1     );
add_action( 'wp_head',             'feed_links',                    2     );
add_action( 'wp_head',             'feed_links_extra',              3     );
add_action( 'wp_head',             'rsd_link'                             );
add_action( 'wp_head',             'wlwmanifest_link'                     );
add_action( 'wp_head',             'index_rel_link'                       );
add_action( 'wp_head',             'parent_post_rel_link',          10, 0 );
add_action( 'wp_head',             'start_post_rel_link',           10, 0 );
add_action( 'wp_head',             'adjacent_posts_rel_link_wp_head', 10, 0 );
add_action( 'wp_head',             'locale_stylesheet'                    );
add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 );
add_action( 'wp_head',             'noindex',                       1     );
add_action( 'wp_head',             'wp_print_styles',               8     );
add_action( 'wp_head',             'wp_print_head_scripts',         9     );
add_action( 'wp_head',             'wp_generator'                         );
add_action( 'wp_head',             'rel_canonical'                        );
add_action( 'wp_footer',           'wp_print_footer_scripts'              );
add_action( 'wp_head',             'wp_shortlink_wp_head',          10, 0 );
add_action( 'template_redirect',   'wp_shortlink_header',           11, 0 );

default-filters.phpを書き換えてしまうとWP更新のたびに書き換えなくてはならなくなるので、
テーマディレクトリ内のfunctions.phpにコードを追加します。

・・と思ったのですがフォーラムによると、どうも今回のインラインスタイルの追加は、
新しいテーマの為に追加された記述だとの事で、管理画面より簡単にオンオフの設定ができるようです。



ユーザープロフィール設定

ユーザープロフィール → 管理バーの表示 → サイトを表示する際

のチェックボタンを外すだけでOK。

便利になる機能の追加はよいと思うのですが、ユーザープロフィール設定なんて普段殆ど開きませんので、
今回のような事があってもよほど注意していないと気付きようがありません。



そのような感じで今回は特にファイルの編集などは行わなかったのですが、ついでに書いておくと、
上に記載したdefault-filters.phpの内容を元に、wp_head等によってデフォルトで追加されるタグの表示や削除を設定する事が出来ます。

特にWordpressのバージョンなどの記載や、link要素などが不必要だという方も少なくないと思うのですが、
それらはfunctions.phpにコードを追加する事で消す事ができます。

ただ、中には消してしまうと上手く機能しなくなってしまう要素などもあるので、
消しても良いと思われるコードだけを省く記述(functions.phpにてremove_action)を追加します。

【例】

remove_action( 'wp_head','noindex',1);
remove_action( 'wp_head','wp_print_styles',8);
remove_action( 'wp_head','wp_print_head_scripts',9);
remove_action( 'wp_head','wp_generator');

functions.php内に、上記のような感じで記述します。
(記述内容は、省きたい項目によって適度書き換えます)



このように、WordPressは非常に便利な反面、
バージョンアップするたびに新たなバグが出るのではといつもひやひやします。

なので、余り記事を投稿していないサイトでアップグレードを試した後、
問題がなさそうであれば他サイトの更新を行うようにしています。

今回の件はバグなどではなく、些細なものだったのですぐ済むだろうと考えていたのですが、
ファイルなどをあれこれ見て試していたので、結構時間をとられてしまいました。