WordPress 3.5.1にしたら『Poster』と『するぷろ』でカスタムフィールドが使えなくなった

先日iPhoneだけでブログを更新する極意を記事にしました。しばらく快適なブロガー生活を送っていたのですが、WordPressをWordPress 3.5.1(最新版)にアップデートしたときになぜか『Poster』と『するぷろ』でカスタムフィールドが反映されなくなってしまいました。具体的にはPC側でカスタムフィールドへmetaタグを入力しても『Poster』『するぷろ』共にカスタムフィールドが空になってしまい、『Poster』『するぷろ』でカスタムフィールドを入力してもPCではそれが反映されなくなってしまったのです。

色々調べましたが、『Poster』『するぷろ』両方とも状況が同じ、かつそういった不具合の情報を調べても出てこなかったので、きっと自分のWordPressの環境が原因なのだろうと考え、対処方法を考えました。ほとんど自分用のメモのようなものですが記事にしておきます。

CustomField_on_Poster

WordPress 3.5.1が原因?

確かWordPressが3.5の時は『Poster』『するぷろ』共にカスタムフィールドが使えていたはずで、3.5.1にアップデートして気が付いたら使えなくなっていたと記憶しています。

毎日必ずiPhoneで記事を書いてはいますが、投稿自体は帰宅後にPCから行うことも多いためアップデートのタイミングで確実に使えなくなったと断言できるほど記憶が確かではありません。
All in One SEO Packのmetaタグか使えるメリットのために『Poster』や『するぷろ』をお勧めしましたが、私の環境では3.50から3.51へWordPressをアップデートしたところ、カスタムフィールドにmetaタグを入力しても反映されなくなってしまいました。既に入力されているデータも読み込んでくれません。

3.5へダウングレードしようかとも思いましたが、今後のことを考えるといつまでも3.5のままでいる訳にもいきませんし、3.5で確実に戻るかどうかの保証もないのです。

更に困ったことに、metaタグ関係はWordPressのmeta.phpが関係しているっぽいのですが、3.5と3.5.1のmeta.phpのハッシュ値を比べてみると全く同一だったのです。ということは怪しいと踏んだmeta.phpは完全にシロ、ということになります。

となると怪しいのはいろいろ制約が多いCORESERVER?

このブログが使っているのはCORESERVERというレンタルサーバーです。こいつが結構曲者で、セーフモードでプラグインやWordPressのアップデートがウェブからできなかったり(.htaccessでPHPをCGIモードで動かす必要あり)、パーミッションの問題に悩まされたりと一筋縄ではいきません。

ひょっとしてmetaタグとして入力したデータがデータベースに書き込めていない?

ということで、検索していたらMac用ブログエディタ『MarsEdit』でAll in One SEO Packを使う際の設定について書いているdelaymania氏の記事を発見しました。

基本的には『MarsEdit』と『Poster』『するぷろ』はWordPressから見たら同じなので試しにmeta.phpを書き換えてみました。

書き換えるのは
wp-includes/meta.php
です。

/**
* Determine whether a meta key is protected
*
* @since 3.1.3
*
* @param string $meta_key Meta key
* @return bool True if the key is protected, false otherwise.
*/
function is_protected_meta( $meta_key, $meta_type = null ) {
$protected = ( '_' == $meta_key[0] );

return apply_filters( 'is_protected_meta', $protected, $meta_key, $meta_type );
}

上記コードのうち
$protected = ( '_' == $meta_key[0] );

の部分を
$protected = (( '_' == $meta_key[0] ) && ( strpos($meta_key, "_aioseop") !== 0));

に変更します。

すると、『Poster』『するぷろ』でカスタムフィールドが読み込める or 書き込めるようになりました!

CustomField_on_Surupuro

そもそも今までmeta.phpを改変したことはなく、オリジナルのまま使っていたのにカスタムフィールドは使えていました。ということはmeta.php自体に問題があった訳ではないはずです。突然使えなくなった理由はいまだに不明です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です