admin管理员组文章数量:1134585
I had created on Custom Post Type 'resource', which has 4 taxonomies ('type', 'sector', 'industry', 'rtag')
now i had added 45 posts in following manners
- Type - Brochure, Infographic, Research Paper, Video, White Paper - 9 posts each
- Sectors - Engineering, Cloud, Database - 15 posts each
- Industries - AEC, Real Estate, Manufacturing - 15 posts each
now i had created following templates for each taxonomy
- taxonomy-industry.php
- taxonomy-rtag.php
- taxonomy-sector.php
- taxonomy-type.php
no to get my desired out put i working on "resources/industry/aec/" which is technically taxonomy-industry.php
where i had display by default posts with following code
<?php
$args = array(
'post_type' => 'resource',
'posts_per_page' => 9,
'paged' => get_query_var('paged'),
'tax_query' => array(),
);
// You can modify the $args based on the selected dropdown values here
if (isset($_POST['industry']) && !empty($_POST['industry'])) {
$args['tax_query'][] = array(
'taxonomy' => 'industry',
'field' => 'slug',
'terms' => sanitize_text_field($_POST['industry']),
);
}
// Repeat similar checks for 'sector' and 'type'
$query = new WP_Query($args);
if ($query->have_posts()) :
while ($query->have_posts()) :
$query->the_post();
?>
so when page load it will default all posts that are registered with AEC industry now i had added 3 dropdowns in this template like
<?php
// Get the terms for the 'type' taxonomy
$type_terms = get_terms(array(
'taxonomy' => 'type',
'hide_empty' => false,
));
// Get the terms for the 'sector' taxonomy
$sector_terms = get_terms(array(
'taxonomy' => 'sector',
'hide_empty' => false,
));
// Get the terms for the 'industry' taxonomy
$industry_terms = get_terms(array(
'taxonomy' => 'industry',
'hide_empty' => false,
));
// Retrieve the total number of posts for each option
$type_counts = get_term_post_counts($type_terms);
$sector_counts = get_term_post_counts($sector_terms);
$industry_counts = get_term_post_counts($industry_terms);
function get_term_post_counts($terms) {
$term_counts = array();
foreach ($terms as $term) {
$term_counts[$term->slug] = $term->count;
}
return $term_counts;
}
?>
<div class="clearfix" style="padding:0 15px">
<div class="one-fourth fl">Filter by</div>
<div class="one-fourth fl">
<!-- Dropdown for 'industry' -->
<select id="industry-dropdown" class="width100 position-relative">
<option value="">Industries</option>
<?php foreach ($industry_terms as $term) : ?>
<option value="<?php echo $term->slug; ?>"><?php echo $term->name . ' (' . $industry_counts[$term->slug] . ')'; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="one-fourth fl">
<!-- Dropdown for 'sector' -->
<select id="sector-dropdown" class="width100 position-relative">
<option value="">Sectors</option>
<?php foreach ($sector_terms as $term) : ?>
<option value="<?php echo $term->slug; ?>"><?php echo $term->name . ' (' . $sector_counts[$term->slug] . ')'; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="one-fourth fl">
<!-- Dropdown for 'type' -->
<select id="type-dropdown" class="width100 position-relative">
<option value="">Types</option>
<?php foreach ($type_terms as $term) : ?>
<option value="<?php echo $term->slug; ?>"><?php echo $term->name . ' (' . $type_counts[$term->slug] . ')'; ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
no i had tried various code but didn't find the solution, what I am trying to implement that when any body select any drop-down then existing loop will change the value and display the result for that selected value for AEC industry
for example i had selected brochure then it should show Brochure from AEC for all sectors without page refresh.
We can go with JS+Ajax and Add another div to display output and hide old existing loop div.
Please guide me or suggest me some path to achieve this.
本文标签: How to Filter the Custom term loop based on dropdown
版权声明:本文标题:How to Filter the Custom term loop based on dropdown 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736807922a1953768.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论