您可以稍微调整一下代码,使其正常工作。首先,您需要创建一个包含类别的表单。然后,将表单提交到同一页面,以将其应用于查询。
<div class="latest_video">
<!-- We add a form that submits the request the the same page -->
<form method="get">
<?php wp_dropdown_categories( \'show_count=1&hierarchical=1\' ); ?>
<input type="submit" name="submit" value="view" />
</form>
<?php
// the query
$the_query = new WP_Query( array(
\'post_type\' => \'post\',
\'posts_per_page\' => 10,
\'post_status\' => \'publish\',
\'category_name\' => $_GET[\'cat\']
) );
?>
<?php if ( $the_query->have_posts() ) : ?>
<!-- the loop -->
<ul class="flex">
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li class="thebox">
<div class="theimg"><?php the_post_thumbnail( \'large\') ?></div>
<div class="stext3">
<h4><?php $categories = get_the_category();
if ( ! empty( $categories ) ) {
echo \'<a class="themecolor" href="\' . esc_url( get_category_link( $categories[0]->term_id ) ) . \'">\' . esc_html( $categories[0]->name ) . \'</a>\';
} ?></h4>
<h3><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
</div>
</li>
<?php endwhile; ?>
</ul>
<!-- end of the loop -->
<!-- <?php wp_reset_postdata(); ?> -->
<?php endif; ?>
</div>
现在,初始负载将包括
WP_Query
, 但一旦用户选择一个类别并提交表单,页面将重新加载
WP_Query
将更新。确保不添加
action
,因此它将被提交到当前页面。
如果要在不单击提交按钮的情况下重新加载页面,可以添加此JS代码段并删除按钮:
var dropdown = document.getElementById("cat");
function onCatChange() {
if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
location.href = window.location.href + "?cat="+dropdown.options[dropdown.selectedIndex].value;
}
}
dropdown.onchange = onCatChange;
有关更多信息,请参阅
wp_dropdown_categories()
法典第页。