Вам нужно установить бесплатный плагин acf, в этом плагине создаёте нужные поля (цена, дата, длительность).
В каждом посте заполняете эти поля.
Смотрите документацию по фильтрации постов на основе этих полей
https://www.advancedcustomfields.com/resources/que...
Попробуйте сначала без формы сделать страницу, на которой будут выводиться посты к примеру от 600 до 5000р, с помощью документации, которую я выше дал. Когда всё будет получаться. Переходите к этапу замены 600 и 5000 на переменные, которые вы должны получать методом POST или GET от вашей формы. Когда всё будет получаться добавьте фильтрацию не только по цене, а по всем полям.
Прикинул всё же код скрипта на всякий случай, возможны ошибки
<?php
// args
$args = array(
'numberposts' => -1,
'post_type' => 'post',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'data_book', // так вы назвали поле Даты в плагине acf
'value' => '2020.11.10', // такой формат даты в том же плагине выбран Y.m.d это я пишу по памяти смотрите сами точно
'compare' => '='
),
array(
'key' => 'price', // так вы назвали поле Цены в плагине acf
'value' => 5000,
'type' => 'NUMERIC',
'compare' => '<'
)
)
);
// query
$the_query = new WP_Query( $args );
?>
<?php if( $the_query->have_posts() ): ?>
<ul>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>">
<img src="<?php the_field('event_thumbnail'); ?>" />
<?php the_title(); ?>
<?php echo get_field('data_book').'<br>';
echo get_field('price').'<br>';
?>
</a>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); // Restore global post data stomped by the_post(). ?>