我并不熟悉wordpress模式,我需要从wordpress数据库中的任何文章中找回列表或最近标记的数组。如何获取wordpress数据库中最新标签的列表?
我只需要主页上的数据,然后我就可以操作它。
所有功能似乎都设计为按照每个帖子进行工作。
(WordPress的真的让我感到频繁的WordPress程序员抱歉。)
我并不熟悉wordpress模式,我需要从wordpress数据库中的任何文章中找回列表或最近标记的数组。如何获取wordpress数据库中最新标签的列表?
我只需要主页上的数据,然后我就可以操作它。
所有功能似乎都设计为按照每个帖子进行工作。
(WordPress的真的让我感到频繁的WordPress程序员抱歉。)
这是不漂亮,也许是一个MySQL迷可以优化它一点;
SELECT $wpdb->terms.term_id, $wpdb->terms.name, $wpdb->terms.slug
FROM $wpdb->terms
INNER JOIN $wpdb->term_taxonomy ON ($wpdb->terms.term_id = $wpdb->term_taxonomy.term_id)
INNER JOIN $wpdb->term_relationships ON ($wpdb->terms.term_id = $wpdb->term_relationships.term_taxonomy_id)
INNER JOIN $wpdb->posts ON ($wpdb->term_relationships.object_id = $wpdb->posts.ID)
WHERE $wpdb->term_taxonomy.taxonomy = 'post_tag'
ORDER BY $wpdb->posts.post_date DESC
这基本上加入术语,术语的分类,合作关系,并交表一起,让那些在分类学“post_tag”方面,目前有与后的关系,然后通过邮寄的日期,命令他们,下降。
您可能会在结果集中多次获得相同的术语,但我无法弄清楚如何使用GROUP BY
或HAVING
来解决此问题,而不会搞乱日期顺序。
所以一个例子可能会在使用;
$tags= $wpdb->get_results($query); // $query being the above SQL
foreach ($tags as $tag) {
if (!isset($stack[$tag->term_id]))
$stack[$tag->term_id] = $tag;
}
print_r($stack); // should print an array of all tags, ordered by last used
SELECT name, slug, tag_history.tagdate
FROM (SELECT wp_term_relationships.term_taxonomy_id AS tagid,
substr(wp_posts.post_date_gmt,1,10) AS tagdate
FROM wp_term_relationships
INNER JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id=wp_term_relationships.term_taxonomy_id
INNER JOIN wp_posts ON wp_posts.ID=wp_term_relationships.object_id
WHERE taxonomy='post_tag' ORDER BY post_date_gmt DESC, wp_posts.post_title)
AS tag_history
INNER JOIN wp_terms ON wp_terms.term_id=tag_history.tagid
GROUP BY tag_history.tagid
ORDER BY tag_history.tagdate DESC
这是我写的一个解决办法 - 相信这是可能使它更清晰! - 根据关联标记日期< - > post创建标记站点地图(XML,需要<LOC&>
和<LASTMOD>
...)。您可以在查询结尾处添加一个LIMIT 0,10
以仅查看最后10个关联标签。
此查询将返回您可能以多种方式使用的三列(单个标签的LAST关联的名称,slug和日期)。
请记住,wp_
是WordPress中默认的dB前缀。您必须用$wpdb->
(请参阅TheDeadMedic's answer)更改每次出现的内容,并务必在查询前设置$wpdb
。
谢谢你。我不得不为查询添加一个DISTINCT,或者加入与帖子无关的标签。 – Failpunk 2010-06-06 23:09:33