/ Wordpress / Вывод документов

Вывод документов

19.03.2022

485

Вывод документов различного типа .pdf, .tiff, .psd и так далее. Как лучше организовать наполнение и вывод.

Поле документы для записи

// Поле Документы
add_action('add_meta_boxes', 'docs_box');
function docs_box() {
	add_meta_box('docs_box', 'Документы', 'docs_box_func', 'post', 'normal', 'high');
}

function docs_box_func($post){
	$docs = get_post_meta($post->ID, 'docs', 1);
	?>
	<label><input style="width:100%;" type="text" name="extra[docs]" value="<?php if($docs){echo $docs;}?>" /></label>
	<input type="hidden" name="atb_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />
	<?php
}


// Сохранение полей (общий для всех полей)
add_action('save_post', 'fields_box_update');
function fields_box_update($post_id){
	if (!wp_verify_nonce($_POST['atb_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;    // Проверка, что нам пришли все поля
	foreach($_POST['extra'] as $key=>$value){ // Циклом добавляем поля. Можно и в ручную это делать... Но так проще добавить новое поле
		if(empty($value) AND $value != 0){ // Если значение пустое и не равно 0
			delete_post_meta($post_id, $key); // Удаляем это поле из мета-данных
			continue; // Продолжаем
		}
		update_post_meta($post_id, $key, $value); // Обновляем или добавляем мета-данные
	}
	return $post_id;
}

В это поле вносим id нужных документов (вложений) через запятую. ID вложения можно узнать по url когда мы его выбираем в медиабиблиотеке, также желательно у вложения заполнять поле Заголовок — название документа, это пригодится при его выводе.

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

Вывод документов в шаблоне записи

<?php $docs_id = get_post_meta( $post->ID, 'docs', true );
if (!empty($docs_id)) {
	echo '<div class="product-docs">';
	$docs_id_array = explode(",", $docs_id);
	foreach ($docs_id_array as $id) {
		if (get_post_mime_type($id) == 'image/tiff' ) { $icon = '/wp-content/uploads/2022/03/tiff-icon.gif'; }
		else { $icon = '/wp-content/uploads/2022/03/pdf-icon.gif'; }
		
		echo '<a href="'.wp_get_attachment_url( $id ).'" target="_blank"><img src="'.$icon.'"> ';
		echo get_the_title($id);
		echo '</a>';
	}
	echo '</div>';
} ?>

В виде названия документа выводим поле Заголовок вложения. Также подставляем нужную иконку в зависимости от типа файла.

Стили:

.product-docs {margin-bottom: 30px; font-size: 1rem; display: flex; flex-wrap: wrap;}
.product-docs > * {display: flex; align-items: center; margin-bottom: 10px; width: 50%; padding: 0 30px;}
.product-docs > * img {max-width: 35px; margin-right: 5px;}

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Вывод документов
Чтение и запись файлов
Рекомендации для васЧтение и запись файловOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.