【问题标题】:How can I get a list of the most recent tags in a wordpress database?如何获取 wordpress 数据库中最新标签的列表?
【发布时间】:2010-06-04 08:26:23
【问题描述】:

我根本不熟悉 wordpress 架构,我需要从 wordpress 数据库中的任何帖子中获取最新标签的列表或数组。

我只需要主页上的可用数据,然后我就可以对其进行操作。

所有功能似乎都设计为在每个帖子的基础上工作。

(Wordpress 真的让我为经常使用 wordpress 的程序员感到难过。)

【问题讨论】:

    标签: wordpress tags


    【解决方案1】:

    这不是很漂亮,也许 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 BYHAVING 来解决此问题,而不会弄乱日期顺序。

    所以一个可能正在使用的例子可能是;

    $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
    

    【讨论】:

    • 谢谢伙计。我必须在查询中添加一个 DISTINCT,否则它对于与帖子无关的标签会很有趣。
    【解决方案2】:
    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
    

    这是我写的解决方法 - 确保可以使它更清晰! - 根据关联标签发布的日期构建标签站点地图(XML,需要<LOC&><LASTMOD>...)。您可以在查询末尾添加 LIMIT 0,10 以仅查看最后 10 个关联的标签。

    此查询将返回三列(名称、slug 和单个标签的 LAST 关联日期),您可能会以多种方式使用。

    请记住,wp_ 是 WordPress 中默认的 dB 前缀。您必须使用$wpdb-> 更改每一个匹配项(请参阅TheDeadMedic's answer)并确保在查询之前设置$wpdb

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      相关资源
      最近更新 更多