我正在为我的论文开发一个拉丁文学数字图书馆。 现在我正在撰写作者的档案页面。 作者是一个自定义帖子类型,注册为“auctores”,其中分配了一个名为“periodi”的自定义分类。 在存档页面(archive-auctores.php)中,我想显示由meta字段和其他三列列出的所有作者:Periods(指我想制作过滤器的自定义分类),Number书籍(应该有分配给该作者的书籍(cpt)的数量)和Gener(在哪里显示分配给该作者的书籍的所有文学体裁,它将是通过cpt分配给书籍cpt的另一种分类法 - onomies插件)。数字列应该是可排序的(asc / desc),而我想为句点和种类制作过滤器。 I.E. - >打开存档页面,它将显示完整的作者列表。所以应该可以过滤作者的时间段,页面应该只显示作者用特定的分类术语“标记”。
我以为我找到了解决方案here,但当我尝试在下拉菜单中选择一个字词时,列表保持不变。
我肯定错过了一些东西。 这就是我现在模板的代码:
<form method="post" action="<?php the_permalink()?>">
<select name="periodi" id="selectperiodo" class="postform" onchange="submit();">
<option value="">Tutti i periodi</option>
<?php
$args = array(
'orderby' => 'ID',
'order' => 'ASC',
'hide_empty' => false,
'fields' => 'all',
'hierarchical' => true,
'pad_counts' => false,
'get' => '',
'child_of' => 0,
'parent' => '',
'childless' => false,
'cache_domain' => 'core',
'update_term_meta_cache' => true,
'meta_query' => '',
'parent' => 0
);
$terms = get_terms('periodi', $args);
if ( $terms ) {
foreach ( $terms as $term ) {?>
<option <?php if($term->slug == $_POST['periodi']){ echo 'selected="selected"';} ?> value="<?php echo esc_attr( $term->slug )?>"><?php echo esc_html( $term->name ) ?></option>
<?php }
}
?>
</select>
</form>
<table class="dataTable table table-hover">
<tr>
<th>Nome</th>
<th>Periodo</th>
<th>Opere</th>
<th>Genere</th>
</tr>
<?php $auctores_query = new WP_Query(array(
'post_type' => 'auctores',
'posts_per_page' => -1,
'order' => 'ASC',
'meta_key' => 'nome_classico',
'orderby' => 'meta_value',
)
); ?>
<?php $j = 0 ?>
<?php while ($auctores_query->have_posts()) : $auctores_query->the_post(); ?>
<?php $additional_class = (++$j % 2 == 0) ? 'even' : 'odd'; ?>
<tr class="<?php echo $additional_class ?>">
<td><?php the_title( '<h3 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" title="' . esc_attr( sprintf( __( 'Collegamento alla pagina di %s', 'antiquarialatina' ), the_title_attribute( 'echo=0' ) ) ) . '" rel="bookmark">', '</a></h3>' )?></td>
<td>
<?php
$terms = get_the_terms( $post->ID, 'periodi' );
if ( $terms && ! is_wp_error( $terms ) ) :
$periodi_links = array();
foreach ( $terms as $term ) {
$periodi_links[] = $term->name;
}
$on_draught = join( ", ", $periodi_links );
?>
<?php echo $on_draught; ?>
<?php endif; ?>
</td>
<td><span class="badge"><?php
$args = array('post_type' => 'texti',
'tax_query' => array (
array ( 'taxonomy' => 'auctores',
'field' => 'id',
'terms' => get_the_ID()
)
));
$query = new WP_Query( $args );
// the query
echo $query->found_posts;
?></span></td>
</tr>
<?php endwhile; ?>
</table>
任何帮助都会非常感激。 谢谢!
答案 0 :(得分:0)
如果您希望根据下拉选项限制作者列表,则您需要修改查询并使用Taxonomy Query Parameters:
修改代码,使其响应表单帖子,如下所示:
// First we have to take the args out into a variable
$args = array(
'post_type' => 'auctores',
'posts_per_page' => -1,
'order' => 'ASC',
'meta_key' => 'nome_classico',
'orderby' => 'meta_value'
);
// Then, we watch for the post and modify the args if appropriate:
if ( ! empty( $_POST['periodi'] ) ) {
$args['tax_query'] = array(
array(
'taxonomy' => 'periodi',
'field' => 'slug',
'terms' => $_POST['periodi']
)
);
}
// Then we can execute the query:
$auctores_query = new WP_Query( $args );