Я новичок в программировании, и я застрял на этом.Это в WordPress / PHP.
Во-первых, у меня есть выпадающий список категорий с кнопкой отправки.Этот код входит в файл mainindex.php
:
<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter">
<?php category_dropdown(); ?>
</form>
Представление работает нормально, и (я полагаю, AJAX) вызывает мою функцию фильтрации.У меня есть это в themefunctions.php
файле:
add_action( 'wp_ajax_myfilter', 'filter_function' );
add_action( 'wp_ajax_nopriv_myfilter', 'filter_function' );
function filter_function() {
$args = array(
'orderby' => 'date', // we will sort posts by date
'order' => $_POST['date'], // ASC or DESC
);
if ( isset( $_POST['categoryfilter'] ) ) {
$args['tax_query'] = array(
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['categoryfilter'],
)
);
}
$query = new WP_Query( $args );
die();
}
Теперь я хочу получить доступ к переменной $query
в моем mainindex.php
, чтобы я мог написать:
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
get_template_part( 'content', get_post_format() );
endwhile;
wp_reset_postdata();
else :
echo 'No posts found';
endif;
Исправьте меня, еслиЯ ошибаюсь, но я не могу просто сказать $query = filter_function();
в mainindex.php
и вернуть $query
в функции фильтра, потому что она должна запускаться по щелчку, а не вызываться напрямую.
IЯ застрял на этом, это, вероятно, довольно просто.Нужно ли создавать глобальную переменную $query
или что-то подобное, чтобы к ней можно было обращаться в отдельном файле php?Спасибо.