Intereting Posts
Удалить пользовательские поля после публикации? Размеры созданных изображений не совпадают. На главной странице ссылки изображения на страницу, на странице страницы ссылку на свой собственный образ? Делает ли «show_option_all» в wp_list_categories что-нибудь? Buddypress: Редактировать активность, когда новая запись в блоге Показать другую тему для администратора? Как добавить пользовательские поля на страницу всех пользователей звуковая ссылка производит черный ящик MySQL Rank & $ wpdb Пользовательские почтовые адреса Woocommerce: пользовательский цикл на вкладках продуктов перерывает вкладку отзывов Исключение категорий из раздела «Управление категориями» с использованием фильтра get_terms Как установить пост-автора в настраиваемое поле сообщения через внешнюю форму? Помощь с 4.6. Объект ответа прикрепления в плагине API JSON Функция для предотвращения сбоев пользователей

Сохранять значение метаданных отображения на бэкэнд – Пользовательский Metabox

Я пытался добавить тип пользовательской публикации и пользовательский мета-ящик. Что я сделал. Но я столкнулся с другой проблемой. Когда я даю какую-либо ценность в Custom Metabox, я создал его, не сохраняя данные на бэкэнд. Он отлично работает над Frontend.

Теперь, поскольку он не сохраняет значение в backend при каждом обновлении сообщения, я должен каждый раз вводить значение.

Вот что я сделал до сих пор:

function news_post_type() { $labels = array( 'name' => _x( 'News', 'post type general name' ), 'singular_name' => _x( 'News', 'post type singular name' ), 'add_new' => _x( 'Add New', 'book' ), 'add_new_item' => __( 'Add New' ), 'edit_item' => __( 'Edit News' ), 'new_item' => __( 'New News' ), 'all_items' => __( 'All News' ), 'view_item' => __( 'View News' ), 'search_items' => __( 'Search News' ), 'not_found' => __( 'Not found' ), 'not_found_in_trash' => __( 'Not found in the Trash' ), 'parent_item_colon' => '', 'menu_name' => 'News' ); $args = array( 'labels' => $labels, 'description' => 'This section contains the News section of the site', 'public' => true, 'menu_position' => 5, 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments'), 'has_archive' => true, ); register_post_type( 'news', $args ); } add_action( 'init', 'news_post_type' ); 

и для метаболизма:

 add_action( 'add_meta_boxes', 'news_date_box' ); function news_date_box() { add_meta_box( 'news_date_box', __( 'News Date', 'myplugin_textdomain' ), 'news_date', 'news', 'side', 'high' ); } function news_date( $post ) { wp_nonce_field( plugin_basename( __FILE__ ), 'news_date_content_nonce' ); echo '<input type="text" id="news_date" name="news_date" placeholder="Enter Date"/>'; } add_action( 'save_post', 'news_date_save' ); function news_date_save( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( !wp_verify_nonce( $_POST['news_date_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; } $news_date = $_POST['news_date']; update_post_meta( $post_id, 'news_date', $news_date ); } 

Я искал решение, но не нашел его и оказался здесь. Я могу ошибаться в вышеприведенном коде, или мне нужно добавить дополнительные коды. Любое предложение, как решить эту ситуацию.

Заранее спасибо.

Измените функцию news_date() следующим образом:

 function news_date( $post ) { wp_nonce_field( plugin_basename( __FILE__ ), 'news_date_content_nonce' ); // get the current value of 'news_date' to use in the <input> $value = get_post_meta ($post->ID, 'news_date', true) ; echo '<input type="text" id="news_date" name="news_date" placeholder="Enter Date" value="' . $value . '"/>'; } 

Еще одно предложение – изменить

 add_action( 'save_post', 'news_date_save' ); 

в

 add_action( 'save_post_news', 'news_date_save' ); 

и тогда вы уверены, что ваша функция news_date_save() вызывается только тогда, когда сообщение, post_type == 'news' , сохраняется.

Это позволит вам избавиться от if ( 'page' == $_POST['post_type'] ) { if / then / else, потому что тогда условие в этом if никогда не будет оцениваться как true.