我使用下面的代码将类别按层次列出。更改选择选项时,它将重定向到相应的类别页面。但它不显示所选的类别。谁能帮我一下吗?
$terms = wp_dropdown_categories(array(
\'taxonomy\' => \'news-categories\',
\'hierarchical\' => 1,
\'show_option_none\' => "CATEGORIES",
\'option_none_value\' => "",
\'name\' => \'news_cat_name\',
\'id\' => \'cat_search\',
\'value_field\' => \'slug\',
\'selected\' => 1,
));
JavaScript:
$(\'#cat_search\').change(function () {
if ($(this).val()) {
window.location = "<?php echo esc_url(home_url(\'/\')); ?>news-categories/" + $(this).val();
}
});
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
好吧,我想你已经把这段代码放在了类别存档中,下拉列表总是显示相同的类别,对吗?
这正是它对当前代码应该做的。在此行中:
\'selected\' => 1,
您决定选择值为1的项目。可能没有这样的值(1不经常作为术语slug出现),因此选择了第一项。
那么代码应该是什么样子呢?
您应该将适当的值传递为selected
参数。如果您在类别存档页面上显示此下拉列表,则可以使用get_queried_object()
获取当前类别的函数:
$current_category = get_queried_object();
$terms = wp_dropdown_categories(array(
\'taxonomy\' => \'news-categories\',
\'hierarchical\' => 1,
\'show_option_none\' => "CATEGORIES",
\'option_none_value\' => "",
\'name\' => \'news_cat_name\',
\'id\' => \'cat_search\',
\'value_field\' => \'slug\',
\'selected\' => $current_category->slug,
));