サポート » 使い方全般 » 「一括編集」で更新日時を更新させたくない

  • jiojio

    (@jiojio)


    以前こちらのフォーラムで「クイック編集で更新すると日付が登録されてしまう」
    https://ja.wordpress.org/support/topic/%e3%82%af%e3%82%a4%e3%83%83%e3%82%af%e7%b7%a8%e9%9b%86%e3%81%a7%e6%9b%b4%e6%96%b0%e3%81%99%e3%82%8b%e3%81%a8%e6%97%a5%e4%bb%98%e3%81%8c%e7%99%bb%e9%8c%b2%e3%81%95%e3%82%8c%e3%81%a6%e3%81%97%e3%81%be/

    を参考に下記コードに編集して更新日時を更新させないようにfunction.phpで設定しました。

    function my_insert_post_data( $data, $postarr ){
    	if ( isset( $_POST['action'] ) && $_POST['action'] == 'inline-save' ) {
    		if ( $data['post_status'] == 'draft' ) {
    			unset( $data['post_modified'] );
    			unset( $data['post_modified_gmt'] );
    		}
    	}
    	return $data;
    }
    add_filter( 'wp_insert_post_data', 'my_insert_post_data', 10, 2 );

    しかし、更新日時が更新されてしまいます。
    クイック編集or複数の投稿を修正する「一括編集」の判定コードが恐らく「$_POST[‘action’] == ‘inline-save’」だと思ったのですが、そこに何か問題があると思いまして、下記で実行したところ、更新日時を更新させずにできました。

    function my_insert_post_data( $data, $postarr ){
    	//if ( isset( $_POST['action'] ) && $_POST['action'] == 'inline-save' ) {
    		if ( $data['post_status'] == 'draft' ) {
    			unset( $data['post_modified'] );
    			unset( $data['post_modified_gmt'] );
    		}
    	//}
    	return $data;
    }
    add_filter( 'wp_insert_post_data', 'my_insert_post_data', 10, 2 );

    しかしながら、これだと、あらゆる記事更新の更新日時を登録できなくなってしまいます。

    クイック編集or複数の投稿を修正する「一括編集」の判定が間違っているのでしょうか?
    どなたかご存知の方がおられましたらご教示いただければ幸いです。

    • このトピックはjiojioが3年前に変更しました。
    • このトピックはjiojioが3年前に変更しました。
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • ishitaka

    (@ishitaka)

    こんにちは

    if ( $data['post_status'] == 'draft' ) {

    下書きという条件が入っています。これを削除すればいいかと思います。

    function my_insert_post_data( $data, $postarr ){
    	if ( isset( $_POST['action'] ) && $_POST['action'] == 'inline-save' ) {
    		unset( $data['post_modified'] );
    		unset( $data['post_modified_gmt'] );
    	}
    	return $data;
    }
    add_filter( 'wp_insert_post_data', 'my_insert_post_data', 10, 2 );
    トピック投稿者 jiojio

    (@jiojio)

    ご丁寧にご回答ありがとうございます!

    申し訳ございません。
    記載したコードが誤っていました。

    下記です。

    //クイック編集で更新日を変更しない
    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;
    }

    publishで公開記事として設定しているものの、どういうわけか中のコードが実行されません。

    $_POST[‘action’] == ‘inline-save’ という条件について、クイック編集や一括編集の条件分岐として正しいものなのか怪しく気になっています。
    いかがでしょうか??

    • この返信は3年前にjiojioが編集しました。
    • この返信は3年前にjiojioが編集しました。
    ishitaka

    (@ishitaka)

    提示のコードで検証してみましたが、更新日時は更新されませんでした。
    テーマ・プラグインかテーマのカスタマイズが影響しているのかもしれません。デフォルトテーマにしたりプラグインを停止するなどして試してみてください。

    あと下記コードではどうでしょうか?同じことなのですが・・・

    function my_insert_post_data( $data, $postarr ){
    	if ( $postarr['action'] == 'inline-save' ) {
    		unset( $data['post_modified'] );
    		unset( $data['post_modified_gmt'] );
    	}
    	return $data;
    }
    add_filter( 'wp_insert_post_data', 'my_insert_post_data', 10, 2 );
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「「一括編集」で更新日時を更新させたくない」には新たに返信することはできません。