Word Press で下書きのプレビューが出来ない(画面が真っ白になる)バグ。
環境は
- WordPress 3.7.1
- Custom Field Template 2.1.8
- Popular Posts 2.6.2.0
エラーログを確認すると
PHP Fatalerror: Cannot use string offset as an array in ... popular-posts.php on line 282
とのこと。
エラーが出ているソースは
// get the post's custom fields
$custom = get_post_custom($postID);
// find the view count field
$views = intval($custom['pvc_views'][0]); // エラー!!
// increment the count
if($views > 0) {
update_post_meta($postID, 'pvc_views', ($views + 1));
} else {
add_post_meta($postID, 'pvc_views', 1, true);
}
どうも get_post_custom の戻り値に空の文字列が帰っているためにエラーおきている。 値のチェックが甘いのも問題だが、 配列を返すべきの get_post_custom 関数が文字列を返している原因は Custom Field Template のよう。
get_post_metadata フィルタ。
add_filter( 'get_post_metadata', array(&$this, 'get_preview_postmeta'), 10, 4 );
function get_post_meta($post_id, $key = '', $single = false) {
// いろいろ略...
return ''; // これ
}
暫定ながら popular-posts.php の修正コード
// get the post's custom fields
$custom = get_post_custom($postID);
// find the view count field
if ($custom && $custom['pvc_views']) { // 追加
$views = intval($custom['pvc_views'][0]);
// increment the count
if($views > 0) {
update_post_meta($postID, 'pvc_views', ($views + 1));
} else {
add_post_meta($postID, 'pvc_views', 1, true);
}
}