admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('resource_filter_nonce') ]); } } public function renderFilterForm() { ob_start(); ?>
'resource_type', 'hide_empty' => true]); $subjects = get_terms(['taxonomy' => 'resource_subject', 'hide_empty' => true]); ?>
Showing 0 resources

Filters applied: None

loadResources(); ?>
'resource', 'posts_per_page' => -1, 'tax_query' => [], 's' => isset($_POST['search']) ? sanitize_text_field($_POST['search']) : '', ]; if (!empty($_POST['resource_type']) || !empty($_POST['resource_subject'])) { $query_args['tax_query']['relation'] = 'AND'; if (!empty($_POST['resource_type'])) { $query_args['tax_query'][] = [ 'taxonomy' => 'resource_type', 'field' => 'slug', 'terms' => sanitize_text_field($_POST['resource_type']) ]; } if (!empty($_POST['resource_subject'])) { $query_args['tax_query'][] = [ 'taxonomy' => 'resource_subject', 'field' => 'slug', 'terms' => sanitize_text_field($_POST['resource_subject']) ]; } } $query = new WP_Query($query_args); ob_start(); if ($query->have_posts()) { echo '
'; while ($query->have_posts()) { $query->the_post(); echo '
' . get_the_title() . '
'; } echo '
'; } else { echo '

No resources found.

'; } wp_reset_postdata(); // Prepare response JSON $response = [ 'count' => $query->found_posts, 'filters' => [ 'search' => isset($_POST['search']) ? sanitize_text_field($_POST['search']) : '', 'resource_type' => !empty($_POST['resource_type']) ? sanitize_text_field($_POST['resource_type']) : '', 'resource_subject' => !empty($_POST['resource_subject']) ? sanitize_text_field($_POST['resource_subject']) : '' ], 'html' => ob_get_clean() ]; echo json_encode($response); wp_die(); } private function loadResources($query_args = ['post_type' => 'resource', 'posts_per_page' => -1]) { $query = new WP_Query($query_args); if ($query->have_posts()) { echo '
'; while ($query->have_posts()) { $query->the_post(); echo '
' . get_the_title() . '
'; } echo '
'; } else { echo '

No resources found.

'; } wp_reset_postdata(); } } new ResourceFilterPlugin();