1

我已经使用自定义元框制作了自定义帖子类型。当我按“添加新帖子”时,它会自动将输入值导入post_meta表。我该如何解决?我不想在发布帖子之前导入。我有这个代码。

function wpdocs_save_meta_box_mac($post_ID = 0) {
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
        return $post_ID;
    }
    $post_ID = (int) $post_ID;
    $post_type = get_post_type( $post_ID );
    if ( "mactahminleri" == $post_type ) {

        // Sanitize user input.
        $_mac_baslik = sanitize_text_field( $_POST['_mac_baslik'] );
        $_mac_tarih = sanitize_text_field( $_POST['_mac_tarih'] );
        $_mac_saat = sanitize_text_field( $_POST['_mac_saat'] );
        $_mac_kod = ( $_POST['_mac_kod'] );
        $_mac_tahmin = sanitize_text_field( $_POST['_mac_tahmin'] );
        $_mac_sonuc_iy = ( $_POST['_mac_sonuc_iy'] );
        $_mac_sonuc_ms = ( $_POST['_mac_sonuc_ms'] );
        $_mac_oran = ( $_POST['_mac_oran'] );
        $_mac_afflink = ( $_POST['_mac_afflink'] );
        $_mac_durum = ( $_POST['_mac_durum'] );

        // Update the meta field in the database.
        update_post_meta( $post_ID, '_mac_baslik', $_mac_baslik );
        update_post_meta( $post_ID, '_mac_tarih', $_mac_tarih );
        update_post_meta( $post_ID, '_mac_saat', $_mac_saat );
        update_post_meta( $post_ID, '_mac_kod', $_mac_kod );
        update_post_meta( $post_ID, '_mac_tahmin', $_mac_tahmin );
        update_post_meta( $post_ID, '_mac_sonuc_iy', $_mac_sonuc_iy );
        update_post_meta( $post_ID, '_mac_sonuc_ms', $_mac_sonuc_ms );
        update_post_meta( $post_ID, '_mac_oran', $_mac_oran );
        update_post_meta( $post_ID, '_mac_afflink', $_mac_afflink );
        update_post_meta( $post_ID, '_mac_durum', $_mac_durum );
    }
    return $post_ID;

}

add_action( 'save_post', 'wpdocs_save_meta_box_mac' );

mysql当我单击添加新的自定义帖子时,将自动导入元数据NULL

4

1 回答 1

1

您需要在保存帖子元之前检查帖子状态。用过get_post_status()。请参阅 Codex 获取get_post_status()发布状态

在保存元值之前添加此条件

function wpdocs_save_meta_box_mac($post_ID = 0) {
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
        return $post_ID;
    }
    $post_ID = (int) $post_ID;
    $post_type = get_post_type( $post_ID );
    if ( "mactahminleri" == $post_type ) {
        if ( get_post_status ( $post_ID ) == 'publish' ) {
            // Sanitize user input.
            $_mac_baslik = sanitize_text_field( $_POST['_mac_baslik'] );
            $_mac_tarih = sanitize_text_field( $_POST['_mac_tarih'] );
            $_mac_saat = sanitize_text_field( $_POST['_mac_saat'] );
            $_mac_kod = ( $_POST['_mac_kod'] );
            $_mac_tahmin = sanitize_text_field( $_POST['_mac_tahmin'] );
            $_mac_sonuc_iy = ( $_POST['_mac_sonuc_iy'] );
            $_mac_sonuc_ms = ( $_POST['_mac_sonuc_ms'] );
            $_mac_oran = ( $_POST['_mac_oran'] );
            $_mac_afflink = ( $_POST['_mac_afflink'] );
            $_mac_durum = ( $_POST['_mac_durum'] );

            // Update the meta field in the database.
            update_post_meta( $post_ID, '_mac_baslik', $_mac_baslik );
            update_post_meta( $post_ID, '_mac_tarih', $_mac_tarih );
            update_post_meta( $post_ID, '_mac_saat', $_mac_saat );
            update_post_meta( $post_ID, '_mac_kod', $_mac_kod );
            update_post_meta( $post_ID, '_mac_tahmin', $_mac_tahmin );
            update_post_meta( $post_ID, '_mac_sonuc_iy', $_mac_sonuc_iy );
            update_post_meta( $post_ID, '_mac_sonuc_ms', $_mac_sonuc_ms );
            update_post_meta( $post_ID, '_mac_oran', $_mac_oran );
            update_post_meta( $post_ID, '_mac_afflink', $_mac_afflink );
            update_post_meta( $post_ID, '_mac_durum', $_mac_durum );
        }
    }
    return $post_ID;

}

add_action( 'save_post', 'wpdocs_save_meta_box_mac',99,1 );
于 2018-01-16T11:54:48.883 回答