WordPressで投稿のカテゴリーやタグ、タイトルなどを簡単に修正する場合、便利な機能として【クイック編集】というのがあります。また【クイック編集】には複数の投稿をチェックして編集できる「一括編集機能」があり、少しの変更ならサクサクできて便利ですね。
でもこの【クイック編集】には1つ問題が・・・それは「更新日」が変更されてしまう(設定されてしまう)こと。
古い投稿のカテゴリーを修正したり、タイトルを少し変更したいだけなのですから内容はそのまま=古い情報がそのままということなのですから、できれば「更新日」はそのままにしたい、そんなケースありませんか?
テーマによっては更新日が表示されるようになっているものもあるので「この記事は更新日が最近だから新しい情報だろう」と訪問者に思われてしまい、それを参考にやってなかったら役に立たなかった→このサイトは糞サイトなんて言われたりすることも(ネットの世界は恐ろしい・・・)。
でもやっぱり簡易な変更ならクイック編集の方が便利だ!という方のために、今回は「公開済みの投稿をクイック編集しても更新日が設定されたり更新されたりしない」方法を紹介します。
されないことの証明なので画像に変化はありません(いわゆる悪魔の証明)・・・実際には自身のサイトでテスト記事を作ったり、影響のない記事で試したりして実証してみてくださいね。
クイック編集や一括で更新日挿入・変更をしないようにする方法
テストした環境では1つ1つの投稿を修正する「クイック編集」でも、複数の投稿を修正する「一括編集」でも機能しました。また、カスタム投稿タイプでも機能しました。
※環境などにより実際に同じようになるとは限りませんので自身のサイトでテストしてから使ってください。
ちなみに私の使っている【Simplicity2】テーマでは記事の公開日と更新日はこのように表示されます
上が公開日と更新日が異なるもの、下が更新していないものです。
本当に最新の情報に更新した記事であれば有益な表示ですけどそうでない場合はあまりよろしくないですね。それなら「更新日の表示自体を非表示にしちゃえ!」となりそうですけどせっかくの機能なのでそのまま生かしたいところです。
【Simplicity2】では通常の投稿編集画面には更新日を変更する/しないの設定があるので、1つ1つ修正する場合には更新日問題は発生しません。でもやっぱりクイック編集だと・・・となってしまうんですね。
この不都合を解消するためにはテーマのfunctions.phpへ以下のコードを挿入します
//クイック編集で更新日を変更しない
function my_insert_post_data( $data, $postarr ){
if ( isset( $_POST['action'] ) && $_POST['action'] == 'inline-save' ) {
if ( $data['post_status'] == 'publish' ) {
unset( $data['post_date'] );
unset( $data['post_date_gmt'] );
unset( $data['post_modified'] );
unset( $data['post_modified_gmt'] );
}
}
return $data;
}
add_filter( 'wp_insert_post_data', 'my_insert_post_data', 10, 2 );
簡単なコードなのにこんなに便利になるとは・・・というコードです。
「inline-save(クイック更新)」したときに「publish(公開済み)」の記事であれば「post_date(公開日)」や「post_modified(更新日)」の変更をしないというものです。
※このコードはWordPressの日本語フォーラムクイック編集で更新すると日付が登録されてしまうに掲載されていた内容を元にカスタマイズしたものを掲載しています。
フォーラムでは下書きのものを・・・という設定だったので「公開済みのものを」に変えました。公開済み=公開日は設定されているのでコード中の
unset( $data['post_date'] );
unset( $data['post_date_gmt'] );
はコメントアウトして大丈夫だと思います。
もしもfunctions.phpの編集で画面が真っ白になったりエラーが発生したりしたときは
を参考に修復してくださいね。

