Здравствуйте. Помогите сделать фильтр пожалуйста. Делаю по примерам из интернета) Не понимаю, что я делаю не так
вывод фильтра на фронтенде. Этот код я вставляю в файл portfolio.php, это файл шаблона в корне темы.
<?php
$projectsCat = get_terms([
'taxonomy' => 'projectscat',
'orderby' => 'name',
]);
foreach ($projectsCat as $projectsCatData => $projectsCatItem) :
?>
<div class="portfolio_filter_item">
<div class="filter_category_parent">
<input type="checkbox" id="<?php echo $projectsCatItem->term_id; ?>" name="<?php echo $projectsCatItem->term_id; ?>" class="portfolio_filter_input">
<label for="<?php echo $projectsCatItem->term_id; ?>" class="portfolio_filter_label">
</label>
<span class="menu portfolio_filter_dropdown">
<?php echo $projectsCatItem->name; ?>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.6465 15.3536L5.64648 9.35359L6.35359 8.64648L12 14.2929L17.6465 8.64648L18.3536 9.35359L12.3536 15.3536C12.1583 15.5489 11.8417 15.5489 11.6465 15.3536Z" fill="#2E1C17"/>
</svg>
</span>
</div>
</div>
<?php endforeach; ?>
в этом же файле вывожу записи которая ссылается на шаблон в template-parts/template-portfolio.php
<?php
global $wp_query;
$wp_query = new WP_Query(array(
'post_type' => 'projects',
'posts_per_page' => 9,
'paged' => get_query_var('paged') ?: 1,
'category_name' => ''
));
$counter = 1;
// Цикл.
if ( $wp_query->have_posts() ) :
echo '<div class="portfolio_cards active">';
while ( $wp_query->have_posts() ) :
$wp_query->the_post();
get_template_part( 'template-parts/template', 'portfolio' );
?>
<?php
if ( is_int( $counter / 3 ) ) {
echo '</div>';
echo '<div class="portfolio_cards active">';
}
$counter++;
endwhile;
?>
<?php echo '</div>'; else : ?>
<?php endif; ?>
js код:
jQuery( function( $ ){
$('#filter').change(function(){
var filter = $('#filter');
$.ajax({
url:filter.attr('action'),
data:filter.serialize(),
type:filter.attr('method'),
beforeSend:function(xhr){
filter.find( 'button' ).text( 'Загружаю...' ); // изменяем текст кнопки
},
success:function(data){
filter.find( 'button' ).text( 'Применить фильтр' ); // возвращаеи текст кнопки
$('.loop-archive-workshop').html(data);
}
});
return false;
});
});
php код для ajax фильтра в functions.php:
function mysite_filter_function(){
//groups checkboxes
if( $groups = get_terms( array( 'taxonomy' => 'projectscat' ) ) ) :
$groups_terms = array();
foreach( $groups as $group ) {
if( isset( $_POST['group_' . $group->term_id ] ) && $_POST['group_' . $group->term_id] == 'on' )
$groups_terms[] = $group->slug;
}
endif;
$tax_query = array( 'relation' => 'AND' );
if ( ! empty( $groups_terms ) ) {
$tax_query[] = array(
'taxonomy' => 'projectscat',
'field' => 'slug',
'terms' => $groups_terms,
);
}
$args = array(
'orderby' => 'date',
'post_type' => 'workshop',
'posts_per_page' => -1,
'tax_query' => $tax_query,
);
$query = new WP_Query( $args );
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
get_template_part( 'template-parts/template', 'portfolio' );
endwhile;
wp_reset_postdata();
else :
echo 'No posts found';
endif;
die();
}
add_action('wp_ajax_myfilter', 'mysite_filter_function');
add_action('wp_ajax_nopriv_myfilter', 'mysite_filter_function');