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

标签 php mysql wordpress categories

我有一个有趣的问题,需要一些帮助来解决。

我没有做过很多 WordPress 网站,但我很熟悉它,并且对 PHP 非常熟悉。

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

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

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

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

...等等

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

最佳答案

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

首先您需要使用'create_term'钩子(Hook):

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,您可以用它来显示您的帖子

关于php - 如何从 WordPress 中最近创建的类别中获取帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29222771/

相关文章:

mysql - 子查询通过更新返回多于 1 行

wordpress - 适用于多个内容领域的最佳 CMS

php - 选择动态端点时 Guzzle 不使用基本 uri(在本地工作,但在 K8S 上不工作)

php - 如何使用 Laravel 5.5 禁用 Chrome 的 Dusk headless 模式?

php - Magento 管理网格字段自定义过滤器问题

以页面为父级的 Wordpress 自定义帖子类型?

javascript - WordPress 主题的基础 javascript

javascript - 如果使用 jquery/javascript 将 url 设置为特定值,如何隐藏和显示 div?

php - Null 和 False 之间的区别

php - 无法让 foreach 使用 PHP 正确生成 html 表