WordPressを使っていてちょっとした誤記やタグの修正をしたいときありますよね。
ただ、そういう小さな修正のたびに更新日が更新されるのは誤解を招くことにもなりますので、更新日はそのままにしたいと思ったので探してみたら望みのものを完璧に作られている方がいました!!
以下の設定をすると
更新日を更新するor更新しない(修正のみ) の2つが選択可能となります。
このように投稿画面上で選択が可能になります。
参考にした記事はこちら↓
やりかた
WordPress → 外観 →テーマの編集 →functions.phpに以下をペーストするだけです。
※Simplicityだと以下のように子テーマの中の「テーマのための関数(functions.php)」となります。
ソースコード
以下ソースコードをコピーしてください
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
add_action( 'admin_menu', 'add_update_level_custom_box' ); /*更新ボタンが押されたときに実行*/ add_action( 'save_post', 'save_custom_field_postdata_of_time' ); /* カスタムフィールドを投稿画面に追加 */ 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 '<div style="padding-top: 3px; overflow: hidden;">'; echo '<div style="width: 100px; float: left;"><input name="update_level" type="radio" value="high" '; if( $update_level[0]=="" || $update_level[0]=="high" ) echo ' checked="checked"'; echo ' />通常更新</div><div style="width: 100px; float: left;"><input name="update_level" type="radio" value="low" '; if( $update_level[0]=="low" ) echo ' checked="checked"'; echo '/>修正のみ<br /></div>'; echo '</div>'; } /* 設定したカスタムフィールドの値をDBに書き込む記述 */ function save_custom_field_postdata_of_time( $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; } |
まとめ
あとは公開済みの記事の編集画面の右上にできた
で、修正のみにチェックを入れて更新ボタンを押せば更新日は変更なしで修正が可能となります。