如何编写Get_Categories_by_Year()函数?

时间:2013-08-04 作者:ian

我需要写信a function to get all the categories for a given year. 由于分类法的创建日期没有存储在数据库中,我真的不知道该怎么做。我最初的想法是获取给定年份的所有帖子,并以某种方式找到与这些帖子相关的所有类别,但我不知道如何做到这一点,这听起来非常缓慢。也许我可以写一些SQL,但我对PHP更为精通。再次回到函数,我想它应该是这样的:

function get_categories_by_year($year) {
 // Do stuff...
 return $array_of_categories_in_year;
}
这实际上是一种自定义分类法,但由于类别是默认的层次分类法,因此我决定将其用作示例。如果相关的话,我很乐意提供更多关于输出应该是什么样子的信息。谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

我会用SQL查询来实现这一点。我想用PHP做会有点慢。

此功能应完成以下工作:

function get_categories_from_year($year) {
    $sql = "select term.* 
        from {$wpdb->terms} term
            inner join {$wpdb->term_taxonomy} tax on (term.term_id = tax.term_id)
            inner join {$wpdb->term_relationships} relation on (tax.term_taxonomy_id = relation.term_taxonomy_id)
            inner join {$wpdb->posts} post on (relation.object_id = post.ID)
        where tax.taxonomy = \'category\' and YEAR(post.post_date) = %d";
    return $wpdb->get_results( $wpdb->prepare($sql, $year) );
}

结束

相关推荐

Taxonomy as checkboxes

因此,我试图让Wordpress将类别显示为自定义元框中的一系列选择框,并使用以下示例tutorial, 但当我去保存选择时,它会以预期选择ID的形式生成其他类别。它也无法保存多个选择。 <?php // Add the Meta Box function add_custom_meta_box() { add_meta_box( \'custom_meta_box\', // $id&