Intereting Posts
Как остановить wordpress, чтобы сделать запрос по умолчанию? Использовать внешнюю ссылку в подменю добавления Таблица сравнения цен на основе пользовательского типа сообщений? Как показать пользовательское сообщение один раз при активации плагина? Как автоматизировать число зарегистрированных номеров? Без регистрации пользователя на внутренней странице отключается wordpress Почему этот wp_redirect не работает в is_single ()? 2 отдельная установка 1 тема тот же сервер Обновлены версии WordPress vs add_filter? Показать идентификатор категории одного уровня Плагин генерирует неожиданный вывод – при вводе mysql dump import Преобразование каждой новой строки в текстовое поле как новое значение в массиве Как добавить элемент в меню администратора WP? Редактор комментариев без рендеринга & nbsp и тэг Измените свойства настраиваемого типа сообщения после его регистрации?

Просмотр содержимого из загруженного файла в редакторе

У меня есть пользовательский метабокс, который позволяет пользователю загружать файлы .csv при создании страницы. Содержимое .csv отображается на созданной странице в «front-end».

Я хотел бы показать содержимое на странице администратора в редакторе WYSIWYG, чтобы пользователь мог в случае необходимости меняться. Может ли кто-нибудь сказать мне, как просмотреть содержимое загруженного файла?

Я действительно не думаю, что код для функции обмена и загрузки необходим, но если кто-то хочет, дайте мне знать.

М.

Хорошо … Я действительно теряю его здесь.

Я просто собираюсь извлечь все, чтобы было более ясно.

В моих functions.php:

function jj_readcsv($filename, $header=false) { $handle = fopen($filename, "r"); echo '<table style="width:100%;">'; //display header row if true if ($header) { $csvcontents = fgetcsv($handle); echo '<tr>'; foreach ($csvcontents as $headercolumn) { echo "<th>$headercolumn</th>"; } echo '</tr>'; } // displaying contents while ($csvcontents = fgetcsv($handle)) { echo '<tr>'; foreach ($csvcontents as $column) { echo "<td>$column</td>"; } echo '</tr>'; } echo '</table>'; fclose($handle); } 

Это функция, которая считывает загруженный файл из базы данных и выводит его в красивую таблицу.

Вот пользовательский обмен, где файл загружается на сервер.

 <?php function add_meta_box_csv() { // Define the custom attachment for pages add_meta_box( 'meta_box_csv', 'Upload csv', 'meta_box_csv', 'page', 'normal' ); } // end add_meta_box_csv add_action('add_meta_boxes', 'add_meta_box_csv'); function meta_box_csv() { $file = get_post_meta(get_the_ID(), 'meta_box_csv', true); wp_nonce_field(plugin_basename(__FILE__), 'meta_box_csv_nonce'); $html = '<p class="description">'; $html .= 'Selecteer een .csv bestand.'; $html .= '</p>'; echo $html; printf( '<p><input type="file" name="meta_box_csv" value="'.$file['file'].'" size="15" /></p>' ); $content = jj_readcsv($file['file'],true); //$editor_id = 'mycustomeditor'; //wp_editor( $content, $editor_id ); //$csv = array_map('str_getcsv', file('data.csv')); } // end meta_box_csv function save_custom_meta_data($id) { /* --- security verification --- */ if(!wp_verify_nonce($_POST['meta_box_csv_nonce'], plugin_basename(__FILE__))) { return $id; } // end if if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $id; } // end if if('page' == $_POST['post_type']) { if(!current_user_can('edit_page', $id)) { return $id; } // end if } else { if(!current_user_can('edit_page', $id)) { return $id; } // end if } // end if /* - end security verification - */ // Make sure the file array isn't empty if(!empty($_FILES['meta_box_csv']['name'])) { // Setup the array of supported file types. In this case, it's just PDF. $supported_types = array('text/csv'); //$supported_types = array('text/comma-separated-values'); // Get the file type of the upload $arr_file_type = wp_check_filetype(basename($_FILES['meta_box_csv']['name'])); $uploaded_type = $arr_file_type['type']; // Check if the type is supported. If not, throw an error. if(in_array($uploaded_type, $supported_types)) { // Use the WordPress API to upload the file $upload = wp_upload_bits($_FILES['meta_box_csv']['name'], null, file_get_contents($_FILES['meta_box_csv']['tmp_name'])); if(isset($upload['error']) && $upload['error'] != 0) { wp_die('Er is een fout ontstaan bij het uploaden: ' . $upload['error']); } else { add_post_meta($id, 'meta_box_csv', $upload); update_post_meta($id, 'meta_box_csv', $upload); } // end if/else } else { wp_die("Dit is geen .csv bestand"); } // end if/else } // end if } // end save_custom_meta_data add_action('save_post', 'save_custom_meta_data'); function update_edit_form() { echo ' enctype="multipart/form-data"'; } // end update_edit_form add_action('post_edit_form_tag', 'update_edit_form'); ?> 

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

Есть ли способ сохранить выходные данные function jj_readcsv() в строковой переменной, чтобы я мог использовать ее для вывода?

И учитывая, что @TomJNowell сказал: я не могу рассматривать его как обычный текстовый файл.

Я надеюсь, что кто-нибудь поймет мою боль и может помочь мне!

Очень признателен. М.

-EDIT. Хорошо, он работает. Thnx to: https://stackoverflow.com/users/803518/jlevett С его разрешением на: https://stackoverflow.com/a/6675199/3115317 Он дал мне это:

 ob_start(); jj_readcsv($file['file'],true); $link = ob_get_contents(); ob_end_clean(); $editor_id = 'my_uploaded_csv'; wp_editor( $link, $editor_id ); 

И работает как шарм.

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

Содержимое извлекается из загруженного CSV-файла, так что это единственные сохраненные данные, которые у меня есть. Мне нравится сохранять данные в базе данных.

Функция загрузки, похоже, не работает. Вот что я сделал, но не повезло:

 ob_start(); jj_readcsv($file['file'],true); $link = ob_get_contents(); ob_end_clean(); $editor_id = 'my_uploaded_csv'; wp_editor( $link, $editor_id ); 

Здесь я получаю содержимое из uploades .csv и отображаю его в wp_editor для редактирования.
Это функция сохранения:

 function save_wp_editor_fields( $post_id ) { if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if( !current_user_can( 'edit_post' ) ) return; if( isset( $_POST['save_wp_editor_fields'] ) ) update_post_meta( $post_id, 'save_wp_editor_fields' ) ); } add_action( 'save_post', 'save_wp_editor_fields' ); 

Где я ошибаюсь? М.