【问题标题】:Wordpress sql : get all category of a postWordpress sql:获取帖子的所有类别
【发布时间】:2012-07-25 08:33:01
【问题描述】:

我有一个帖子,它有多个类别,我如何通过 sql 查询获取该帖子的所有类别?非常感谢。

【问题讨论】:

    标签: mysql sql wordpress


    【解决方案1】:

    您可以使用此 SQL 获取帖子类别:

    SELECT wt.* FROM wp_posts p
     INNER JOIN wp_term_relationships r ON r.object_id=p.ID
     INNER JOIN wp_term_taxonomy t ON t.term_taxonomy_id = r.term_taxonomy_id
     INNER JOIN wp_terms wt on wt.term_id = t.term_id
    WHERE p.ID=1 AND t.taxonomy="category"
    

    【讨论】:

    • 毫无意义。您查询的是帖子,而不是类别。
    • 查询选择wt.*,在当前上下文中是第三个INNER JOIN中定义的wp_terms表。
    【解决方案2】:

    检查此代码 -

    $post_categories = wp_get_post_categories( $post_id );
    $cats = array();
    
    foreach($post_categories as $c){
        $cat = get_category( $c );
        $cats[] = array( 'name' => $cat->name, 'slug' => $cat->slug );
    }
    

    参考:http://codex.wordpress.org/Function_Reference/wp_get_post_categories--

    【讨论】:

    • 这不是 SQL 查询。
    【解决方案3】:

    试试

    select c.*
    from wp_categories c
    inner join wp_post2cat pc on pc.category_id = c.cat_ID
    inner join wp_posts p on pc.post_id = p.id
    where p.id = 1
    

    【讨论】:

    • 非常感谢,非常完美:)
    • -1 在每次安装时使用表前缀 != wp_ 中断。哦,还有多站点安装。
    • WordPress 没有这些表
    • 看起来wp_post2cat 表在 wordpress 2.3 版(早在 2007 年)中被删除,替换为“术语”相关表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2018-06-24
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多