記事のカテゴリー変更だけで最終更新日も更新されちゃった?
当ブログのカテゴリーの一つに「体調不良」というのがあります。主に通院した時のメモを綴っているのですが、記事が増えるにつれて歯医者だったり耳鼻科だったり病院の種類が増えてきました。
そもそも「体調不良」のカテゴリーを作ったのは、10年ほど前に倒れた時のことを書こうと思ったのですがこれに歯の治療とか蓄膿症がどうのこうのという記事が混在し見づらくなってきました。
そこで、体調不良の下にサブカテゴリーを追加して記事を更新することにしました。すると記事の中身はなにも変更されていないのに最終更新日が変更されていることに気づき、何とかならないかと思い調べてみました。
更新日時を変更せずに記事を修正する方法
投稿の編集画面の右上、公開のウィンドウの上に通常の記事更新か軽微な修正かを選択するウィンドウを作成することで解決する記事を見つけました。下の画像のイメージです。
具体的な方法は、テーマのfunctions.phpに下のコードを追加するだけです。
/**
* 更新時に、更新日付を変更しない
*
*/// 管理画面が開いたときに実行
add_action( ‘admin_menu’, ‘add_update_level_custom_box’ );
// 更新ボタンが押されたときに実行
add_action( ‘save_post’, ‘save_custom_field_postdata’ );// カスタムフィールドを投稿画面に追加
function add_update_level_custom_box() {
//ページ編集画面にカスタムメタボックスを追加
add_meta_box( ‘update_level’, ‘更新レベル’, ‘html_update_level_custom_box’, ‘post’, ‘side’, ‘high’ );
}// 投稿画面に表示するフォームのHTMLソース
function html_update_level_custom_box() {
$update_level = get_post_meta( $_GET[‘post’], ‘update_level’ );echo ‘
‘;
}// 設定したカスタムフィールドの値をDBに書き込む記述
function save_custom_field_postdata( $post_id ) {
$mydata = $_POST[‘update_level’];
if( “” == get_post_meta( $post_id, ‘update_level’ )) {
/* update_levelというキーでデータが保存されていなかった場合、新しく保存 */
add_post_meta( $post_id, ‘update_level’, $mydata, true ) ;
} elseif( $mydata != get_post_meta( $post_id, ‘update_level’ )) {
/* update_levelというキーのデータと、現在のデータが不一致の場合、更新 */
update_post_meta( $post_id, ‘update_level’, $mydata ) ;
} elseif( “” == $mydata ) {
/* 現在のデータが無い場合、update_levelというキーの値を削除 */
delete_post_meta( $post_id, ‘update_level’ ) ;
}
}// 「更新」以外は更新日時を変更しない
add_filter( ‘wp_insert_post_data’, ‘my_insert_post_data’, 10, 2 );
function my_insert_post_data( $data, $postarr ){
$mydata = $_POST[‘update_level’];
if( $mydata == “low” ){
unset( $data[“post_modified”] );
unset( $data[“post_modified_gmt”] );
}
return $data;
}
当ブログはSimplicity2を使わせていただいているので子テーマに上のコードを追加し、所定の動作を得ることができました。
functions.phpのファイル操作はくれぐれも慎重に!
何気なくfunctions.phpにコードを追加すると書きましたが、ここで手違いがあると最悪サイトが表示されなくなる事態に陥ります。この作業をするときはくれぐれも慎重にお願いします。貴サイトになにかあっても当方は責任は持てませんよ・・・(笑)
最後の最後に参照させていただいたサイトを紹介します。
トピック: 記事を修正した時に更新日時(modified_time)を変更せずに保存する方法はな « サポートフォーラム — WordPress
最後までご覧いただきありがとうございました。