如何从WordPress中最近创建的类别中获取帖子

时间:2015-03-24 00:13:07

标签: php mysql wordpress categories

我有一个有趣的问题,我可以使用一些帮助解决。

我还没有完成大量的WordPress网站,但我对它很熟悉,并且非常熟悉PHP。

我需要知道是否有办法从WordPress中最近创建的类别中获取帖子。显然,从特定类别中获取文章非常容易和直接,我不需要那里的帮助。我需要的是也过滤最近创建的类别,只抓取属于它的子类别和帖子。我希望这是有道理的。

我的客户正在进行杂志类型的事情。我使用WP的默认类别创建功能,允许他们每个月创建新的“问题”。该类别实际上是月份和年份。想想一本杂志,例如当前的问题(类别)是2015年3月。他们将每个月创建一个新问题(类别),当然文章将发布在当前问题(类别)的子类别中。

如何从每个月最近创建的类别中抓取帖子以显示在前端?这种方式在目录中看起来像:

  • 2015年3月(主要或“当前”类别)
    • 子类别
      • 文章标题
      • 文章标题
      • 文章标题
    • 子类别
      • 文章标题
      • 文章标题
      • 文章标题

...等

如何仅查询最近创建的属于它的类别和文章?

1 个答案:

答案 0 :(得分:0)

我认为您需要在选项表中保存日期和期限ID,然后您可以搜索最近的日期并获得期限ID。

首先你需要使用'create_term'钩子:

function addDateTerm($tid, $tt_id){
    $date = date('l jS \of F Y h:i:s A');
    add_option( '_date_term_'.$tid, $date );
}
add_action("create_term", 'addDateTerm', 2, 10);

这样,只要管理员创建新术语,就会在wp_option表中创建一组新数据

现在您可以获取该选项并搜索最近的日期和术语ID

function find_closest()
{
$tId = get_terms( 'category', array('hide_empty'=> false));
$date = date('l jS \of F Y h:i:s A');
$termArray = array();

foreach ($tId as $term) {
    $dates = get_option( '_date_term_'.$term->term_id);
    $termArray[$term->term_id] = $dates;
}

foreach($termArray as $k=>$day)
{

        $interval[$k] = abs(strtotime($date) - strtotime($day));

}

asort($interval);
$closest = key($interval);

// print_r($termArray);
// print_r($closest);

echo $closest;

}

此功能取自here,并已针对此示例进行了修改。

$closest变量显示术语ID,然后您可以显示帖子