@php7788

Как вывести те категории из wordpress которые начинаются с даты 2020 на acf?

Здравствуйте. Есть поле project_year которая отвечает за дату категории. Это все на acf. И есть поле project_category которое отвечает за саму категорию. И у каждой project_category есть свои работы внутри этой категории.

Сейчас на моем сайте стоит вот такой код:

<li class="item">
    <a href="<?php echo get_term_link( 30, 'project_category' ); ?>" class="link">
    <h4 class="title"><?php $term = get_term( 30, 'project_category' );//for example uncategorized 

								echo  $term->name; ?></h4></a>									
						<div>
							<div class="number"><?php echo  $term->count; ?></div>
							<div class="text12">подано</div>
						</div>						


</li>


Меня интересуют этот код : <?php echo $term->count; ?>

Сейчас он считает количество робот внутри категории. Но он выводит роботы и 2019 и 2020 годов. Мне нужно чтобы выводил только роботы за 2020 год.

Так вот как мне написать в коде, так чтобы он проверял, чтобы project_year была 2020 года, и если какая то работа не 2020 года, её не считать, а если 2020 то считать. И так для каждой роботы
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
1. Прежде чем выводить данные термина, вы должны проверять наличие этих данных простой проверкой if () { ... }

2. Т.к. у вас список <li>, предположу, что вы хотите вывести список терминов. Соберите их в массив, запустите любой цикл

3. В объекте термина хранится общее количество записей, поэтому количество записей с конкретным мета-ключом вы можете получить только отдельным запросом get_posts(). Желательно указать post_type. Можете указать параметр fields = ids, чтобы запрос не был таким тяжелым

4. Для перевода текста нужно использовать функции __() или _e(). Текст должен быть написан на английском, содержать идентификатор темы, после чего его нужно перевести на нужные вам языки с помощью программы poedit или плагина loco translate

Вот итоговый код:

<?php

$term_ids = array( 29, 30, 31 );
$taxonomy = 'project_category';

foreach ( $term_ids as $term_id ) {
	if ( $term = get_term( $term_id, $taxonomy )  ) { ?>
		<li class="item">
			<a href="<?php echo get_term_link( $term_id, $taxonomy ); ?>" class="link">
			<h4 class="title"><?php echo $term->name; ?></h4></a>									
			<div>
				<?php 

				$args = array(
					'post_type' => 'project',
					'posts_per_page' => -1,
					'tax_query' => [
						[
							'taxonomy' => $taxonomy,
							'field'    => 'id',
							'terms'    => $term_id
						]
					],
					'meta_key' => 'project_year',
					'meta_value'  => '2020',
					'fields' => 'ids'
				);

				if ( $project_posts = get_posts( $args ) ) { ?>
					<div class="number"><?php echo count($project_posts); ?></div>
				<?php } ?>
				
				<div class="text12"><?php _e( 'Filed', 'source' ); ?></div>
			</div>						
		</li>
	<?php }
} ?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы