Заполнить дынные произвольных полей АВТОМАТИЧЕСКИ
Есть главный сайт, есть частичные дубликаты - постоянно приходится делать импорт экспорт статей и галерей.
Речь будет о главном
Есть произвольное поле с slug "have_files" - это количество файлов галереи, подсчет файлов идет через
global $post; $attachments = get_children( array( 'post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ); echo $count = count( $attachments );
и через этот код выводится цифры к описанию статей, но для экспорта нужно записать данные либо в произвольное поле(Custom Fields) либо в таксономию(не подходит).
Поделитесь пожалуйста кодом который будет считать количество файлов и записывать их в Custom Fields после добавления галереи, а так же будит "гибким" т.е. после изменения количества файлов в галереи и обновления поста значения в Custom Fields так же будут меняться.
уже видел статьи про произвольные поля, но мои знания PHP и HTML ничтожны.
СЕЙЧАС ПОЛЬЗУЮСЬ ВАШИМИ НАРАБОТКАМИ с САЙТА
// код блока function extra_fields_box_func( $post ){ $post = get_post(); $attachments = array_values( get_children( array( 'post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) ); $count = count( $attachments ); ?> <p><label><input type="text" name="extra[have_files]" value="<?php echo $count; ?>" style="width:50%" /> ? заголовок страницы (title )</label></p> <input type="hidden" name="extra_fields_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" /> <?php } // включаем обновление полей при сохранении add_action('save_post', 'my_extra_fields_update', 0); /* Сохраняем данные, при сохранении поста */ function my_extra_fields_update( $post_id ){ if ( !wp_verify_nonce($_POST['extra_fields_nonce'], __FILE__) ) return false; // проверка if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return false; // если это автосохранение if ( !current_user_can('edit_post', $post_id) ) return false; // если юзер не имеет право редактировать запись if( !isset($_POST['extra']) ) return false; // Все ОК! Теперь, нужно сохранить/удалить данные $_POST['extra'] = array_map('trim', $_POST['extra']); foreach( $_POST['extra'] as $key=>$value ){ if( empty($value) ){ delete_post_meta($post_id, $key); // удаляем поле если значение пустое continue; } update_post_meta($post_id, $key, $value); // add_post_meta() работает автоматически } return $post_id; } /* END ==произвольные поля=*/
Код как бы выполняет свое назначение, но чувствую что что-то не так
Код Вам врядли кто-то напишет, если только Kama захочет потратить свое время
Я же дам направление, куда нужно двигаться, логику работы опишу:
Это ключевые слова.
Используйте хук save_post и во время срабатывания этого хука выполняйте обновление поля have_files
Поддерживаю ответ!