Wordpress添加元框不保存数据

时间:2015-03-02 14:26:21

标签: php wordpress

我一直在寻找解决方案,但是我找不到任何与之相关的东西。

我正在创建一个插件,它使用不同帖子类型周围的各种元框。

这个特殊的元框用于列出一个名为' Apartments'在预订'的添加/编辑屏幕内发布类型。它可以将预订与公寓联系起来。

当我点击发布或更新时,没有保存任何内容,该选项只是默认为清空/ $ value。

有什么想法吗?

提前致谢

亚历

    <?php

function bookingsapartment_add_meta_box() {

    $screens = array( 'bookings' );

    foreach ( $screens as $screen ) {

        add_meta_box(
            'bookingsapartment_sectionid',
            __( 'Apartment', 'bookingsapartment_textdomain' ),
            'bookingsapartment_meta_box_callback',
            $screen
        );
    }
}
add_action( 'add_meta_boxes', 'bookingsapartment_add_meta_box' );


function bookingsapartment_meta_box_callback( $post ) {


    wp_nonce_field( 'bookingsapartment_meta_box', 'bookingsapartment_meta_box_nonce' );


    $value = get_post_meta( $post->ID, 'apartmentname', true );

    $options = get_posts(
        array(
            'post_type'   => 'apartments', 
            'orderby'     => 'title', 
            'order'       => 'ASC', 
            'numberposts' => -1 
        )
    );
    echo '<label for="bookingsapartment_new_field">';
    _e( 'This is the description', 'bookingsapartment_textdomain' );
    echo '</label> ';
    echo '<select class="widefat">';
    echo '<option value="' . esc_attr( $value ) . '" size="25" />' . esc_attr( $value ) . '</option>';
        foreach ($options as $option) {
            echo '<option id="bookingsapartment_new_field" name="bookingsapartment_new_field" value="' . $option->post_title . '" size="25" />' . $option->post_title . '</option>'; 
        }

    echo "</select>";
}


function bookingsapartment_save_meta_box_data( $post_id ) {


    if ( ! isset( $_POST['bookingsapartment_meta_box_nonce'] ) ) {
        return;
    }


    if ( ! wp_verify_nonce( $_POST['bookingsapartment_meta_box_nonce'], 'bookingsapartment_meta_box' ) ) {
        return;
    }


    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }


    if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) {

        if ( ! current_user_can( 'edit_page', $post_id ) ) {
            return;
        }

    } else {

        if ( ! current_user_can( 'edit_post', $post_id ) ) {
            return;
        }
    }


    if ( ! isset( $_POST['bookingsapartment_new_field'] ) ) {
        return;
    }


    $my_data = sanitize_text_field( $_POST['bookingsapartment_new_field'] );


    update_post_meta( $post_id, 'apartmentname', $my_data );
}
add_action( 'save_post', 'bookingsapartment_save_meta_box_data' );

?>

1 个答案:

答案 0 :(得分:0)

解决。

我将名称和id值添加到select标记中,它立即起作用。

 echo '<select class="widefat" id="myplugin_new_field" name="myplugin_new_field">';