Пользовательское метаполе Wordpress для пользовательских записей, не хранящих данные - PullRequest
0 голосов
/ 08 мая 2018

Я создал пользовательский тип записи с именем freebie, в котором я создал пользовательский раздел мета, в который добавлено поле ввода. Который не хранит данные, введенные в это поле, а также не отображает значения, введенные в этом поле Я приложил кодировку.

    function adding_freebie_metabox( $post ) {
    add_meta_box( 'my-meta-box',__( 'Freebie extra deatails', 'lwprjs' ),'render_my_freebie_metabox','freebie','normal','default');
}
add_action( 'add_meta_boxes_freebie', 'adding_freebie_metabox' );

//Add field
function render_my_freebie_metabox( $meta_id ) {







// make sure the form request comes from WordPress
    wp_nonce_field( basename( __FILE__ ), 'freebie_meta_box_nonce' );









?>
Enter freebie details such as URL of download and also demo URL
<table class="form-table"><tbody>
<tr>
    <th><label for="freebie-demo">Demo URL</label></th>
    <td><input style="width: 100%" id="freebie-demo" name="freebie-demo" type="text" value="<?php get_post_meta( $post->ID, $meta_field['freebie-demo'], true ); ?>"></td>
</tr>    
</tbody></table>

<?php
}

function food_save_meta_box_data( $post_id ){
    // verify meta box nonce
    if ( !isset( $_POST['freebie_meta_box_nonce'] ) || !wp_verify_nonce( $_POST['freebie_meta_box_nonce'], basename( __FILE__ ) ) ){
        return;
    }
    // return if autosave
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ){
        return;
    }
  // Check the user's permissions.
    if ( ! current_user_can( 'edit_post', $post_id ) ){
        return;
    }
    // store custom fields values
    // cholesterol string
    if ( isset( $_REQUEST['freebie-demo'] ) ) {
        update_post_meta( $post_id, '_freebie_demo', sanitize_text_field( $_POST['freebie-demo'] ) );
    }
}
add_action( 'save_post_freebie', 'food_save_meta_box_data' );
?>

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вы экономите с этим:

freebie_demo

Но затем получить с этим:

freebie-demo

Поэтому попробуйте изменить код сохранения на это:

if ( isset( $_POST['freebie-demo'] ) ) {
        update_post_meta( $post_id, 'freebie-demo', sanitize_text_field( $_POST['freebie-demo'] ) );
    }
0 голосов
/ 08 мая 2018

Я переписал весь блок, пожалуйста, проверьте, работает ли он сейчас:

    function adding_freebie_metabox( $post ) {
        add_meta_box( 'my-meta-box',__( 'Freebie extra deatails', 'lwprjs' ),'render_my_freebie_metabox','freebie','normal','default');
    }
    add_action( 'add_meta_boxes_freebie', 'adding_freebie_metabox' );

    //Add field
    function render_my_freebie_metabox( $post ) {

    // make sure the form request comes from WordPress
        wp_nonce_field( basename( __FILE__ ), 'freebie_meta_box_nonce' );
    ?>
    Enter freebie details such as URL of download and also demo URL
    <table class="form-table"><tbody>
    <tr>
        <th><label for="freebie-demo">Demo URL</label></th>
        <td><input style="width: 100%" id="freebie-demo" name="freebie-demo" type="text" value="<?php get_post_meta( $post->ID, '_freebie_demo', true ); ?>"></td>
    </tr>    
    </tbody></table>

    <?php
    }

    function food_save_meta_box_data( $post_id ){
        // verify meta box nonce
        if ( !isset( $_POST['freebie_meta_box_nonce'] ) || !wp_verify_nonce( $_POST['freebie_meta_box_nonce'], basename( __FILE__ ) ) ){
            return;
        }
        // return if autosave
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ){
            return;
        }
      // Check the user's permissions.
        if ( ! current_user_can( 'edit_post', $post_id ) ){
            return;
        }
        // store custom fields values
        // cholesterol string
        if ( isset( $_REQUEST['freebie-demo'] ) ) {
            update_post_meta( $post_id, '_freebie_demo', sanitize_text_field( $_POST['freebie-demo'] ) );
        }
    }
    add_action( 'save_post_freebie', 'food_save_meta_box_data' );
    ?>
...