/ Wordpress / Вывод файлов по категориям записей

Вывод файлов по категориям записей

14.10.2022

488

Предположим что у нас заведены товары в виде записей и у товаров есть поле Техническое описание, и в этом поле указывается файл .pdf (само название файла). Все файлы при этом расположены в папке /wp-content/uploads/tds/ чтобы можно было их закидывать/заменять без медиабиблиотеки (без папок с датами и добавлением к названиям _1, _2 и т.д.). Так вот выведем все файлы (уникальные без повторений) по категориям по которым разделяются записи.

Запрос и функции

<?php $args = array(    
	'post_type' => 'post',  
	'numberposts' => -1,  
	'meta_key' => 'tds',
	'orderby' => 'title',  
	'order'   => 'ACS',
);

$postslist = get_posts( $args ); ?>  

<?php //Получаем массив всех значений TDS
foreach ($postslist as $post) { setup_postdata($post);
	
	$tds = get_post_meta($post->ID, 'tds', true);
	if (!empty($tds)) { $posts_with_tds[$post->ID] = $tds; }

}

//Уникальные значения TDS
$tds_uniq = array_unique($posts_with_tds);	

//Получаем категории записей
foreach ($tds_uniq as $post => $tds) { 

	$categories = get_the_category( $post );
	$cat_id = $categories[0]->term_id;
	
	$tds_cat[$tds] = $cat_id; // Индексы должны быть уникальными! Поэтому в индекс записываем название файла

}

asort($tds_cat); // Сортируем массив
	
// Выводим записи по категориям
$cat_id_zero = 0;
foreach ($tds_cat as $tds => $cat_id) { 

	if ( $cat_id != $cat_id_zero ){
		$category = get_category( $cat_id );
		if ( $cat_id_zero != 0 ){ echo '</div>'; } // если не первый массив
		echo '<h2>'.$category->name.'</h2>';
		echo '<div class="standard">';
		$cat_id_zero = $cat_id;
	}
	
	echo '<div class="link-container"><a href="/wp-content/uploads/tds/'.$tds.'" class="tds-link" target="_blank">
	<svg version="1.1" id="pdf" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="550.801px" height="550.801px" viewBox="0 0 550.801 550.801" style="enable-background:new 0 0 550.801 550.801;"
xml:space="preserve">
<g>
<path d="M160.381,282.225c0-14.832-10.299-23.684-28.474-23.684c-7.414,0-12.437,0.715-15.071,1.432V307.6
c3.114,0.707,6.942,0.949,12.192,0.949C148.419,308.549,160.381,298.74,160.381,282.225z"/>
<path d="M272.875,259.019c-8.145,0-13.397,0.717-16.519,1.435v105.523c3.116,0.729,8.142,0.729,12.69,0.729
c33.017,0.231,54.554-17.946,54.554-56.474C323.842,276.719,304.215,259.019,272.875,259.019z"/>
<path d="M488.426,197.019H475.2v-63.816c0-0.398-0.063-0.799-0.116-1.202c-0.021-2.534-0.827-5.023-2.562-6.995L366.325,3.694
c-0.032-0.031-0.063-0.042-0.085-0.076c-0.633-0.707-1.371-1.295-2.151-1.804c-0.231-0.155-0.464-0.285-0.706-0.419
c-0.676-0.369-1.393-0.675-2.131-0.896c-0.2-0.056-0.38-0.138-0.58-0.19C359.87,0.119,359.037,0,358.193,0H97.2
c-11.918,0-21.6,9.693-21.6,21.601v175.413H62.377c-17.049,0-30.873,13.818-30.873,30.873v160.545
c0,17.043,13.824,30.87,30.873,30.87h13.224V529.2c0,11.907,9.682,21.601,21.6,21.601h356.4c11.907,0,21.6-9.693,21.6-21.601
V419.302h13.226c17.044,0,30.871-13.827,30.871-30.87v-160.54C519.297,210.838,505.47,197.019,488.426,197.019z M97.2,21.605
h250.193v110.513c0,5.967,4.841,10.8,10.8,10.8h95.407v54.108H97.2V21.605z M362.359,309.023c0,30.876-11.243,52.165-26.82,65.333
c-16.971,14.117-42.82,20.814-74.396,20.814c-18.9,0-32.297-1.197-41.401-2.389V234.365c13.399-2.149,30.878-3.346,49.304-3.346
c30.612,0,50.478,5.508,66.039,17.226C351.828,260.69,362.359,280.547,362.359,309.023z M80.7,393.499V234.365
c11.241-1.904,27.042-3.346,49.296-3.346c22.491,0,38.527,4.308,49.291,12.928c10.292,8.131,17.215,21.534,17.215,37.328
c0,15.799-5.25,29.198-14.829,38.285c-12.442,11.728-30.865,16.996-52.407,16.996c-4.778,0-9.1-0.243-12.435-0.723v57.67H80.7
V393.499z M453.601,523.353H97.2V419.302h356.4V523.353z M484.898,262.127h-61.989v36.851h57.913v29.674h-57.913v64.848h-36.593
V232.216h98.582V262.127z"/>
</g>
</svg> '.$tds.'</a></div>';

}				
echo '</div>'; // для последнего массива

?>

Стили оформления кнопок для скачивания

a.tds-link {
    display: flex;
    align-items: center;
    border: 4px solid #f7f7f7;
    background: #000;
    background: linear-gradient(-45deg, #222 50%, #000 50%);
    border-radius: 10px;
    padding: 15px 30px;
    color: #fff;
    text-decoration: none;
}
	
a.tds-link:hover {
    border-color: #ffcc00;
}	
	
a.tds-link svg {
    width: 40px;
    height: 40px;
    fill: #f2b150;
    margin-right: 15px;
}

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

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

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

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

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