• rio

    (@scaltinov)


    1つの記事に対して、更新回数を記録するカスタムフィールド ‘revision’ を設けました。
    更新ボタンを押すたびにupdate_post_meta()でインクリメントするだけの簡単なものです。
    しかし、その記事に対して SCF::add_settingが実行された(状態で保存した)場合、+1 されるはずが +2 されてしまいます。
    +10 で記述した場合は +20になってしまいます。

    
    function update_revision( $new_status, $old_status, $post ) {
    
        $rev_number = get_post_meta($post->ID , 'revision', true);
        if( empty($rev_number) ){
            add_post_meta($post->ID, 'revision', 1 );
        }else{
            update_post_meta( $post->ID, 'revision', $rev_number + 1);
        }
    
    }
    add_action( 'transition_post_status', 'update_revision', 99, 3 );
    
    function register_fields( $settings, $type, $id, $meta_type ) {
        if ( $type == 'post') {
            // SCF::add_setting( 'ユニークなID', 'メタボックスのタイトル' );
            $Setting = SCF::add_setting( 'id-20', '記事設定' );
    
            $Setting_array = array(
                array(
                    'type'        => 'text',
                    'name'        => 'test',
                    'label'       => 'このフィールドはなくてもいい',
                    'default'     => '',
                    'instruction' => '',
                ),
            );
    
            // $Setting->add_group( 'ユニークなID', 繰り返し可能か, カスタムフィールドの配列 );
            $Setting->add_group( 'pr_setting', false, $Setting_array );
    
            $settings[] = $Setting;
        }
    
        return $settings;
    }
    add_filter( 'smart-cf-register-fields', 'register_fields', 10, 4 );

    `

  • The topic ‘update_post_metaを実行すると2度処理されてしまう’ is closed to new replies.