WordPress の時間が9時間ずれる問題の修正 その2


WordPressのプラグインの “XML-Sitemap” のサイトマップの作成時間や、RSSフィードの作成時間等が、9時間ずれる問題ですが。昨日の記事にて、直してスッキリしたと思っていたら、実はRSSフィードの方は治っていなかったようですので、引き続き修正する作業を行います。

(ここに記録しているのは、自分が使っている WordPress 3.5.1 に対して確認しております。必ず事前のバックアップを忘れないようにしてください。利用しているバージョンによっては、修正箇所などが異なるかもしれませんので、ご注意を。)

各feedのテンプレートを別に作る

各feedの作成時間がずれないように対策したテンプレートを、デフォルトのファイルとは別に作成します。これらのファイルを、使っているテーマファイルの配下(例えば、/path/to/wordpress/wp-content/themes/THEME/feeds/ 等)にコピーして修正するようにします。

/path/to/wordpress/wp-includes/feed-atom-comments.php
/path/to/wordpress/wp-includes/feed-atom.php
/path/to/wordpress/wp-includes/feed-rdf.php
/path/to/wordpress/wp-includes/feed-rss.php
/path/to/wordpress/wp-includes/feed-rss2-comments.php
/path/to/wordpress/wp-includes/feed-rss2.php

テンプレートファイルを修正する

コピーしたテンプレートファイルに対して、時間がずれないように修正をします。なんか、修正するファイルが多すぎますね・・・。

/path/to/wordpress/wp-content/themes/THEME/feeds/feed-atom.php (2箇所)
修正前
<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></updated>
修正後
<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified()); ?></updated>
修正前
<updated><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></updated>
<published><?php echo get_post_time('Y-m-d\TH:i:s\Z', true); ?></published>
修正後
<updated><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', false); ?></updated>
<published><?php echo get_post_time('Y-m-d\TH:i:s\Z', false); ?></published>

/path/to/wordpress/wp-content/themes/THEME/feeds/feed-rdf.php (2箇所)
修正前
<dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></dc:date>
修正後
<dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', $post->post_date, false); ?></dc:date>
修正前
<dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', $post->post_date_gmt, false); ?></dc:date>
修正後
<dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', $post->post_date, false); ?></dc:date>

/path/to/wordpress/wp-content/themes/THEME/feeds/feed-rss2.php(2箇所)
修正前
<lastBuildDate><?php echo mysql2date('r', get_lastcommentmodified('GMT')); ?></lastBuildDate>
修正後
<lastBuildDate><?php echo mysql2date('r', get_lastcommentmodified()); ?></lastBuildDate>
修正前
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_comment_time('Y-m-d H:i:s', true, false), false); ?></pubDate>
修正後
<pubDate><?php echo mysql2date('D, d M Y H:i:s 0', get_comment_time('Y-m-d H:i:s', false, false), false); ?></pubDate>

/path/to/wordpress/wp-content/themes/THEME/feeds/feed-rss.php(1箇所)
修正前
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
修正後
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s 0', get_lastpostmodified(), false); ?></lastBuildDate>

/path/to/wordpress/wp-content/themes/THEME/feeds/feed-rss2-comments.php(2箇所)
修正前
<lastBuildDate><?php echo mysql2date(‘r’, get_lastcommentmodified(‘GMT’)); ?></lastBuildDate>
修正後
<lastBuildDate><?php echo mysql2date(‘r’, get_lastcommentmodified()); ?></lastBuildDate>
修正前
<pubDate><?php echo mysql2date(‘D, d M Y H:i:s +0000′, get_comment_time(‘Y-m-d H:i:s’, true, false), false); ?></pubDate>
修正後
<pubDate><?php echo mysql2date(‘D, d M Y H:i:s O’, get_comment_time(‘Y-m-d H:i:s’, false), false); ?></pubDate>

各feedのテンプレートを読み込めるように変更する

バージョンアップ等で上書きされてしまうとすべてが台無しになるので、function.php に以下のソースを追記することで、先ほど作成した対策したファイルを読み込ませるように変更します。
remove_filter('do_feed_rdf', 'do_feed_rdf', 10);
remove_filter('do_feed_rss', 'do_feed_rss', 10);
remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
remove_filter('do_feed_atom', 'do_feed_atom', 10);
 
function custom_feed_rdf() {
    $template_file = '/feeds/feed-rdf.php';
    $template_file = ( file_exists( get_template_directory() . $template_file )
        ? get_template_directory()
        : ABSPATH . WPINC
        ) . $template_file;
    load_template( $template_file );
}
add_action('do_feed_rdf', 'custom_feed_rdf', 10, 1);
 
function custom_feed_rss() {
    $template_file = '/feeds/feed-rss.php';
    $template_file = ( file_exists( get_template_directory() . $template_file )
        ? get_template_directory()
        : ABSPATH . WPINC
        ) . $template_file;
    load_template( $template_file );
}
add_action('do_feed_rss', 'custom_feed_rss', 10, 1);
 
function custom_feed_rss2( $for_comments ) {
    $template_file = '/feeds/feed-rss2' . ( $for_comments ? '-comments' : '' ) . '.php';
    $template_file = ( file_exists( get_template_directory() . $template_file )
        ? get_template_directory()
        : ABSPATH . WPINC
        ) . $template_file;
    load_template( $template_file );
}
add_action('do_feed_rss2', 'custom_feed_rss2', 10, 1);
 
function custom_feed_atom( $for_comments ) {
    $template_file = '/feeds/feed-atom' . ( $for_comments ? '-comments' : '' ) . '.php';
    $template_file = ( file_exists( get_template_directory() . $template_file )
        ? get_template_directory()
        : ABSPATH . WPINC
        ) . $template_file;
    load_template( $template_file );
}
add_action('do_feed_atom', 'custom_feed_atom', 10, 1);


これまでのコメント

コメントを残す

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

ブログ著者情報

KAZ@Apocrypha
KAZ@Apocrypha
備忘録的な話題だけでなく、内容に拘らず情報発信をして行きたいと思っています。よろしくお願いします。
このエントリーをはてなブックマークに追加

カテゴリー