Title: 記事を修正した時に更新日時（modified_time）を変更せずに保存する方法はな
Last modified: 2016年7月30日

---

# 記事を修正した時に更新日時（modified_time）を変更せずに保存する方法はな

 *  解決済 [swcn](https://ja.wordpress.org/support/users/swcn/)
 * (@swcn)
 * [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/)
 * 情報ページの一覧を更新日時順に表示しています。
 * 通常の更新時はトップに表示されるのはもちろんいいのですが、ちょっとした手直しなど
   でトップに表示させたくありません…
 * なのでちょっとした更新の時は更新日時（modified_time）を変更せずに保存するなど
   の方法はありませんでしょうか？
 * 皆様のお知恵をお貸しください。よろしくお願いします。

8件の返信を表示中 - 1 - 8件目 (全8件中)

 *  [gogoweb](https://ja.wordpress.org/support/users/gogoweb/)
 * (@gogoweb)
 * [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/#post-171814)
 * save_postsにフックして更新日時を投稿日時に変更すればいいようなきもしますが
    それ
   よりも表示の順番や表示する内容を更新日時ではんかう投稿日時に変えたほうが早いよう
   な気がします。
 *  トピック投稿者 [swcn](https://ja.wordpress.org/support/users/swcn/)
 * (@swcn)
 * [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/#post-171827)
 * gogowebさん、コメントありがとうございます。
 * 新着情報と更新情報を一緒に表示させ、新着記事には新着アイコンを付け、更新時には
   更新アイコンを付けてトップに表示するようにさせているので、投稿日時ではちょっと
   うまくないのです…
 * 理想は更新ボタンを２つ設置し、片方を通常更新、片方は更新日時を変更せずに更新する、
   などの案はあるのですがなかなか実装まではいけません…
 *  [gogoweb](https://ja.wordpress.org/support/users/gogoweb/)
 * (@gogoweb)
 * [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/#post-171865)
 * 投稿直前の投稿データはwp_insert_post_dataで取得することができるので
 *     ```
       add_filter('wp_insert_post_data','my_insert_post_data',10,2);
       function my_insert_post_data($data, $postarr){
       	if(条件文){
       		unset($data["post_modified"]);
       		unset($data["post_modified_gmt"]);
       	}
       	return $data;
       }
       ```
   
 * で更新日時を変更せずに更新できると思います。
 *  トピック投稿者 [swcn](https://ja.wordpress.org/support/users/swcn/)
 * (@swcn)
 * [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/#post-171882)
 * gogowebさん、ありがとうございます。
 * 試してみようと思ったのですが、ifの条件文になにを入れればよいか思いつきませんで
   した…
 * 例えばで良いので何かありますでしょうか？
 * よろしくお願いします。
 *  [gogoweb](https://ja.wordpress.org/support/users/gogoweb/)
 * (@gogoweb)
 * [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/#post-171887)
 * ボタンを２つ用意するというのなら片方のボタンのパラメータを与えるとか
    新しくメタ
   ボックスを追加してそこに更新かそのままかのチェックを用意してそれを取得するとか
   はどうでしょうか？
 *  トピック投稿者 [swcn](https://ja.wordpress.org/support/users/swcn/)
 * (@swcn)
 * [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/#post-171937)
 * gogowebさん、アドバイスありがとうございます。
 * アドバイスを元に新しくメタボックスを追加して「手直し」か「更新」かの値を取得する
   方法にしてみました。
 * 下記のコードで今のところうまく動いてくれているのですが、何かよくない所があれば
   ご指摘いただきたいです。
 * よろしくお願いします。
 *     ```
       /*管理画面が開いたときに実行*/
       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 '<div style="padding-top: 3px; overflow: hidden;">';
           echo '<div style="width: 80px; float: left;"><input name="update_level" type="radio" value="none" ';
           if( $update_level[0]=="" || $update_level[0]=="none" ) echo ' checked="checked"';
           echo ' />未指定</div><div style="width: 80px; float: left;"><input name="update_level" type="radio" value="low" ';
           if( $update_level[0]=="low" ) echo ' checked="checked"';
           echo ' />手直し<br /></div><div style="width: 80px; float: left;"><input name="update_level" type="radio" value="high" ';
           if( $update_level[0]=="high" ) echo ' checked="checked"';
           echo '/>更新<br /></div>';
           echo '</div>';
       }
   
       /* 設定したカスタムフィールドの値を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 != "high" ){
       		unset( $data["post_modified"] );
       		unset( $data["post_modified_gmt"] );
       	}
       	return $data;
       }
       ```
   
 *  トピック投稿者 [swcn](https://ja.wordpress.org/support/users/swcn/)
 * (@swcn)
 * [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/#post-171938)
 * 更新時更新時とばかり考えていたので新規投稿時のことを忘れてました…
 * 上のコードでは新規投稿時は更新日時が0になってしまうので、
 * `$mydata != "high"`
 * のところを
 * `$mydata == "low"`
 * にしました。
 *  トピック投稿者 [swcn](https://ja.wordpress.org/support/users/swcn/)
 * (@swcn)
 * [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/#post-171943)
 * 最終的にこのようにしました。
 *     ```
       /*管理画面が開いたときに実行*/
       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 '<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( $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;
       }
       ```
   

8件の返信を表示中 - 1 - 8件目 (全8件中)

 トピック「記事を修正した時に更新日時（modified_time）を変更せずに保存する方法は
な」には新たに返信することはできません。

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 8件の返信
 * 2人の参加者
 * 最後の返信者: [swcn](https://ja.wordpress.org/support/users/swcn/)
 * 最後の活動: [12年、 8ヶ月前](https://ja.wordpress.org/support/topic/%e8%a8%98%e4%ba%8b%e3%82%92%e4%bf%ae%e6%ad%a3%e3%81%97%e3%81%9f%e6%99%82%e3%81%ab%e6%9b%b4%e6%96%b0%e6%97%a5%e6%99%82%ef%bc%88modified_time%ef%bc%89%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%9b%e3%81%9a/#post-171943)
 * 状態: 解決済

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
