2014-08-29 2 views
-1

Я использую Smashing Magazine учебник шаг за шагом. Но в моих настраиваемых полях не работает автоматическое сохранение. После нажатия кнопки публикации и обновления поля пустые. Как решить проблему.Не работает автоматическое сохранение пользовательских полей в Wordpress

function my_custom_post_movie() { 
    $labels = array(
    'name'    => _x('movies', 'post type general name'), 
    'singular_name'  => _x('movie', 'post type singular name'), 
    'add_new'   => _x('Add New', 'book'), 
    'add_new_item'  => __('Add New movie'), 
    'edit_item'   => __('Edit movie'), 
    'new_item'   => __('New movie'), 
    'all_items'   => __('All movies'), 
    'view_item'   => __('View movie'), 
    'search_items'  => __('Search movies'), 
    'not_found'   => __('No movies found'), 
    'not_found_in_trash' => __('No movies found in the Trash'), 
    'parent_item_colon' => '', 
    'menu_name'   => 'movies' 
); 
    $args = array(
    'labels'  => $labels, 
    'description' => 'Holds our movies and movie specific data', 
    'public'  => true, 
    'menu_position' => 5, 
    'supports'  => array('title', 'editor', 'thumbnail', 'excerpt', 'comments'), 
    'has_archive' => true, 
); 
    register_post_type('movie', $args); 
} 
add_action('init', 'my_custom_post_movie'); 

// Register Custom Taxonomies 
function my_taxonomies_movie() { 
    $labels = array(
    'name'    => _x('movie Categories', 'taxonomy general name'), 
    'singular_name'  => _x('movie Category', 'taxonomy singular name'), 
    'search_items'  => __('Search movie Categories'), 
    'all_items'   => __('All movie Categories'), 
    'parent_item'  => __('Parent movie Category'), 
    'parent_item_colon' => __('Parent movie Category:'), 
    'edit_item'   => __('Edit movie Category'), 
    'update_item'  => __('Update movie Category'), 
    'add_new_item'  => __('Add New movie Category'), 
    'new_item_name'  => __('New movie Category'), 
    'menu_name'   => __('movie Categories'), 
); 
    $args = array(
    'labels' => $labels, 
    'hierarchical' => true, 
); 
    register_taxonomy('movie_category', 'movie', $args); 
} 
add_action('init', 'my_taxonomies_movie', 0); 

// Meta Box 
add_action('add_meta_boxes', 'movie_date_box'); 
function movie_date_box() { 
    add_meta_box( 
     'movie_date_box', 
     __('movie date', 'myplugin_textdomain'), 
     'movie_date_box_content', 
     'movie', 
     'side', 
     'high' 
    ); 
} 

function movie_date_box_content($post) { 
    wp_nonce_field(plugin_basename(__FILE__), 'movie_date_box_content_nonce'); 
    echo '<label for="movie_date"></label>'; 
    echo '<input type="text" id="movie_date" name="movie_date" placeholder="enter a date" />'; 
} 

add_action('save_post', 'movie_date_box_save'); 
function movie_date_box_save($post_id) { 

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

    if (!wp_verify_nonce($_POST['movie_date_box_content_nonce'], plugin_basename(__FILE__))) 
    return; 

    if ('page' == $_POST['post_type']) { 
    if (!current_user_can('edit_page', $post_id)) 
    return; 
    } else { 
    if (!current_user_can('edit_post', $post_id)) 
    return; 
    } 
    $movie_date = $_POST['movie_date']; 
    update_post_meta($post_id, 'movie_date', $movie_date); 
} 

Спасибо за помощь.

ответ

0

Ваша информация фактически сохраняется в базе данных, но она не вызывается после отправки сообщения.

Изменение:

function movie_date_box_content($post) { 
    wp_nonce_field(plugin_basename(__FILE__), 'movie_date_box_content_nonce'); 
    echo '<label for="movie_date"></label>'; 
    echo '<input type="text" id="movie_date" name="movie_date" placeholder="enter a date" />'; 
} 

к следующему:

function movie_date_box_content($post) { 
    wp_nonce_field(plugin_basename(__FILE__), 'movie_date_box_content_nonce'); 
    echo '<label for="movie_date"></label>'; 
    echo '<input type="text" id="movie_date" name="movie_date" placeholder="enter a date" value="' . get_post_meta($post->ID, 'movie_date', true) . '" />'; 
} 

Вы отсутствовали value="' . get_post_meta($post->ID, 'movie_date', true) . '"

get_post_meta() называет мета ключ movie_date из базы данных и показывает, если есть что-то хранится в этом ключе.

Также изменится:

if (!wp_verify_nonce($_POST['movie_date_box_content_nonce'], plugin_basename(__FILE__))) 
return; 

к следующему:

if (!isset($_POST['movie_date_box_content_nonce']) || !wp_verify_nonce($_POST['movie_date_box_content_nonce'], plugin_basename(__FILE__))) 
    return; 

Это проверяет, если одноразовое значение поля установлено и не NULL. Он заботится о Необъявленный индекс уведомление, которое появляется в админке.

Смежные вопросы