时间:2024-04-02
在内容丰富的站点中,经常使用WordPress的自定义分类方法来管理内容。有时,根据需要,我们需要按文章所在的自定义分类方法筛选内容。例如,如果文章类型是“学校”,与之关联的自定义分类方法是“省份”,现在要按省份筛选所有学校文章,就需要使用本文介绍的方法。
<?php function state_taxonomy_dropdown($taxonomy, $orderby = 'date', $order = 'DESC', $limit = '-1', $name, $show_option_all = null) { $args = array( 'orderby' => $orderby, 'order' => $order, 'number' => $limit, ); $term_now = get_query_var('term'); $terms = get_terms($taxonomy, $args); $name = ($name) ? $name : $taxonomy; if ($terms) { printf('<select name="%s" onchange="location=this.value" class="postform">', esc_attr($name)); if ($show_option_all) { printf('<option value="'.get_bloginfo("url").'/school/">%s</option>', esc_html($show_option_all)); } foreach ($terms as $term) { if ($term_now == $term->slug) { $selected = "selected"; } else { $selected = ""; } printf('<option value="'.get_bloginfo("url").'/state/%s" %s>%s</option>', esc_attr($term->slug), esc_html($selected), esc_html($term->name)); } print('</select>'); } } ?>
以上是按分类法过滤内容的函数。该函数有几个参数,可以根据需要输出下拉筛选表单。
$taxonomy:需要作为筛选条件使用的自定义分类法的别名。
$orderby:排序方式,默认为发布日期。
$order:升序还是降序排列,默认为降序。
$limit:显示的分类项目的数量,默认为全部显示。
$name:显示的筛选表单的标签名称,必填项。
$show_option_all:是否显示“全部”链接,默认为不显示。
比如,我们需要显示所有省份作为筛选条件,直接把下面代码放到自定义文章类型的存档页面或分类方法的存档页面就可以了。
<?php state_taxonomy_dropdown('state', 'date', 'DESC', '5', 'state', '显示所有'); ?>
以上代码可以显示所有省份作为筛选条件。你可以根据需要修改参数,来实现更多筛选效果。
Copyright © 2019-2024 jsp.hk