我很幸运使用foreach循环动态创建了侧栏。您可以在函数中执行类似的操作(未测试)。php文件:
$my_terms = get_terms( \'my_taxonomy_name\' );
if( ! is_wp_error( $my_terms ) ) {
foreach( $my_terms as $term ) {
register_sidebar(
\'name\' => $term->name . \' Archive Sidebar\',
\'id\' => \'archive_sidebar_\' . $term->term_id
);
}
}
然后,在您的taxonomy-my\\u taxonomy\\u name中。php模板文件,您可以使用类似这样的内容(未测试)来获取提要栏(从
this answer):
<?php
$term_slug = get_query_var( \'term\' );
$taxonomy_name = get_query_var( \'taxonomy\' );
$current_term = get_term_by( \'slug\', $term_slug, $taxonomy_name );
dynamic_sidebar( \'archive_sidebar_\' . $current_term->term_id );
?>
说到这里,我怀疑这是否是个好主意。假设生成1000个边栏不会对WordPress的性能产生负面影响(这是一个很大的假设),那么后端用户的UI将非常糟糕。我无法想象找到我真正想要使用的边栏。
虽然这仍然会令人困惑,但我鼓励您使用Widget Logic 或者,如果您有不懂代码的用户,Widget Logic Visual.
或者,放弃widgets边栏的全部想法,只需使用get_query_var()
找出模板中的术语存档,然后在模板文件中执行一些上下文感知代码。