Limit tag cloud terms by date

时间:2012-08-06 作者:Yazmin

我一直在寻找一个插件,它可以按日期限制标签云中显示的标签。基本上,我想要从某个日期开始的所有标签。我搜索了当前的插件,没有找到任何受日期限制的插件。

做一些研究,我想我只需要修改以下行:

$tags = get_terms( 
    $args[\'taxonomy\'], 
    array_merge( 
        $args, 
        array( \'orderby\' => \'count\', \'order\' => \'DESC\' ) 
    ) 
); // Always query top tags
收件人:

$tags = get_terms( 
    $args[\'taxonomy\'], 
    array_merge( 
        $args, 
        array( \'orderby\' => \'date\', \'order\' => \'DESC\' ) 
    )
); // Always query top tags
wp_tag_cloud() 函数,但我仍然不知道如何限制日期。建议?

谢谢

2 个回复
最合适的回答,由SO网友:jhussey 整理而成

这并不是说这不可能,只是意味着这需要一些努力。我能够使用一个SQL查询来组合POST、term\\U关系和terms表。这允许标记或名称与在特定日期发布的帖子相关联。这是我使用的sql语句->

select * from lwdev_posts p JOIN lwdev_term_relationships r ON p.id=r.object_id JOIN lwdev_terms t ON r.term_taxonomy_id=t.term_id where p.post_status=\'publish\'
如果您不熟悉SQL,这基本上意味着要合并这三个表并显示已发布的所有列。

您可以使用以下命令将其缩小到术语和日期->

select p.post_date, t.name from lwdev_posts p JOIN lwdev_term_relationships r ON p.id=r.object_id JOIN lwdev_terms t ON r.term_taxonomy_id=t.term_id where p.post_status=\'publish\'
因此,您可以使用一些数据来生成标记云。如果要指定日期范围,请使用以下命令->

 select p.post_date, t.name from lwdev_posts p JOIN lwdev_term_relationships r ON p.id=r.object_id JOIN lwdev_terms t ON r.term_taxonomy_id=t.term_id where p.post_status=\'publish\'
    AND p.post_date BETWEEN \'2012-07-24\' AND \'2012-08-01\' 
用您的表前缀替换lwdev\\uu0。使用一些php并搜索自定义标记云方法,您将能够使用sql返回所有术语,然后使用一些php指定日期。

需要注意的一点是,如果您不按术语名称分组,那么您将得到一个与不同发布日期关联的相同术语的列表。如果按名称分组,则会选择最早的发布日期。

检查phpmyadmin中的sql并测试查询以定制结果。希望有人编写了一种更简单的方法来实现所有这些,您可能需要一些自定义php函数来获得所需的效果,但这似乎是可能的,只是很费力。希望这在某种程度上有所帮助。

SO网友:amit

不可能-

WordPress不使用类别或标签存储日期信息,这就是为什么我们不能对它们进行排序或按日期限制它们的原因。

也没有这样的论点——\'orderby\' => \'date\' 对于get_terms() 作用

请参阅上的Codex文档Possible Parameters.

结束