如何获取wordpress数据库中最新标记的列表?

如何获取wordpress数据库中最新标记的列表?,wordpress,tags,Wordpress,Tags,我对wordpress模式一点也不熟悉,我需要从wordpress数据库中的任何帖子中获取最新标记的列表或数组 我只需要主页上的可用数据,这样我就可以操作它了 所有的功能似乎都是按每个职位设计的 (Wordpress真的让我为经常使用Wordpress的程序员感到抱歉。)这不太好,也许一个MySQL迷可以对它进行一些优化 SELECT $wpdb->terms.term_id, $wpdb->terms.name, $wpdb->terms.slug FROM $wpdb-&g

我对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表连接在一起,获取属于分类法“post_标记”的术语,并且当前与post有关系,然后按post的日期降序排列它们

您可能多次在结果集中获得相同的术语,但我无法确定如何使用
分组方式
拥有
来解决此问题,而不会打乱日期顺序

因此,我们可以举一个例子:

$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

这并不漂亮,也许一个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表连接在一起,获取属于分类法“post_标记”的术语,并且当前与post有关系,然后按post的日期降序排列它们

您可能多次在结果集中获得相同的术语,但我无法确定如何使用
分组方式
拥有
来解决此问题,而不会打乱日期顺序

因此,我们可以举一个例子:

$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
这是我写的一个变通方法-确保它可以使它更清晰根据关联标记的日期构建标记站点地图(XML,需要
..)。您可以在查询结束时添加
限制0,10
,以仅查看最后10个关联的标记

此查询将返回三列(单个标记的名称、slug和上次关联日期),您可以通过多种方式使用它们

请记住,
wp
是WordPress中的默认dB前缀。您必须使用
$wpdb->
(请参阅)更改每个事件,并确保在查询之前设置
$wpdb

这是我写的一个变通方法-确保它可以使它更清晰根据关联标记的日期构建标记站点地图(XML,需要
..)。您可以在查询结束时添加
限制0,10
,以仅查看最后10个关联的标记

此查询将返回三列(单个标记的名称、slug和上次关联日期),您可以通过多种方式使用它们


请记住,
wp
是WordPress中的默认dB前缀。您必须使用
$wpdb->
(请参阅)更改每个事件,并确保在查询之前设置
$wpdb

谢谢。我不得不在查询中添加一个DISTINCT,否则它会加入与帖子无关的标签。谢谢。我必须在查询中添加一个DISTINCT,否则它会加入与帖子无关的标签。