魔扣论坛

魔扣源码论坛业务
查看: 948|回复: 8

[经验交流] WordPress获取某个分类关联的标签

[复制链接]
  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 2955 天

    [LV.Master]开坛老将

    7万

    主题

    227

    回帖

    27万

    积分

    管理员

    Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

    魔扣币
    745707
    贡献
    157899
    威望
    32799

    最佳新人活跃会员热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2017-6-14 18:27:21 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    我在WordPress后台某篇文章的编辑页面,给这篇文章选择了分类:WordPress,接着同时选择了标签:php、主题制作,这时分类(WordPress)就与标签(php、主题制作)建立了关联,利用这种关联我们实现很多种需求,最典型的是细化WordPress文章分类功能,在子分类无法达到我们的需求时,可以使用标签来细化。我只需要提供WordPress分类的id,就可以得到它关联的标签:php、主题制作。

    调用函数

    我们可以先在主题目录的下的functions.php添加以下函数:

    1. function morko_get_category_tags($args) {
    2.     global $wpdb;
    3.     $tags = $wpdb->get_results
    4.     ("
    5.         SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name
    6.         FROM
    7.             $wpdb->posts as p1
    8.             LEFT JOIN $wpdb->term_relationships as r1 ON p1.ID = r1.object_ID
    9.             LEFT JOIN $wpdb->term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
    10.             LEFT JOIN $wpdb->terms as terms1 ON t1.term_id = terms1.term_id,

    11.             $wpdb->posts as p2
    12.             LEFT JOIN $wpdb->term_relationships as r2 ON p2.ID = r2.object_ID
    13.             LEFT JOIN $wpdb->term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
    14.             LEFT JOIN $wpdb->terms as terms2 ON t2.term_id = terms2.term_id
    15.         WHERE
    16.             t1.taxonomy = 'category' AND p1.post_status = 'publish' AND terms1.term_id IN (".$args['categories'].") AND
    17.             t2.taxonomy = 'post_tag' AND p2.post_status = 'publish'
    18.             AND p1.ID = p2.ID
    19.         ORDER by tag_name
    20.     ");
    21.     $count = 0;
    22.    
    23.     if($tags) {
    24.       foreach ($tags as $tag) {
    25.         $mytag[$count] = get_term_by('id', $tag->tag_id, 'post_tag');
    26.         $count++;
    27.       }
    28.     }
    29.     else {
    30.       $mytag = NULL;
    31.     }
    32.    
    33.     return $mytag;
    34. }
    复制代码
    函数用法

    然后在其他主题文件中,我们可以调用某个分类或某几个分类关联的标签:

    1. // 12,13是分类ID,多个用半角逗号隔开
    2. $args = array( 'categories' => '12,13');

    3. // 调用上面定义的函数,来获取ID为12,13的分类的关联标签
    4. $tags = morko_get_category_tags($args);

    5. // 输出我们获取到的关联标签,以列表形式打印
    6. $content .= "<ul>";

    7. if(!empty($tags)) {
    8.   foreach ($tags as $tag) {
    9.     $content .= "<li><a href="".get_tag_link($tag->term_id)."">".$tag->name."</a></li>";
    10.   }
    11. }

    12. $content .= "</ul>";
    13. echo $content;
    复制代码

    好了,基本用法就这些,具体其他用法你可以自由地进行扩展。

    获取某个标签关联的分类

    反过来,我们可能会有这样的需求,既然可以获取某个分类的关联标签,那我能获取某个标签的关联分类吗?答案是可以的,将上面的代码稍微改一下就可以了:

    1. function morko_get_tag_categories($args) {
    2.     global $wpdb;
    3.     $categories = $wpdb->get_results
    4.     ("
    5.         SELECT DISTINCT terms1.term_id as cat_id
    6.         FROM
    7.             $wpdb->posts as p1
    8.             LEFT JOIN $wpdb->term_relationships as r1 ON p1.ID = r1.object_ID
    9.             LEFT JOIN $wpdb->term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
    10.             LEFT JOIN $wpdb->terms as terms1 ON t1.term_id = terms1.term_id,
    11.             $wpdb->posts as p2
    12.             LEFT JOIN $wpdb->term_relationships as r2 ON p2.ID = r2.object_ID
    13.             LEFT JOIN $wpdb->term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
    14.             LEFT JOIN $wpdb->terms as terms2 ON t2.term_id = terms2.term_id
    15.         WHERE
    16.             t1.taxonomy = 'category' AND p1.post_status = 'publish' AND terms2.term_id IN (".$args['tags'].") AND
    17.             t2.taxonomy = 'post_tag' AND p2.post_status = 'publish'
    18.             AND p1.ID = p2.ID
    19.         ORDER by cat_id
    20.     ");
    21.     $count = 0;
    22.    
    23.     if($categories) {
    24.       foreach ($categories as $category) {
    25.         $mycategory[$count] = get_term_by('id', $category->cat_id, 'category');
    26.         $count++;
    27.       }
    28.     }
    29.     else {
    30.       $mycategory = NULL;
    31.     }
    32.    
    33.     return $mycategory;
    34. }
    复制代码
    调用范例
    1. // 12,13是标签ID,多个用半角逗号隔开
    2. $args = array( 'tags' => '12,13');

    3. // 调用上面定义的函数,来获取ID为12,13的标签的关联分类
    4. $categories = morko_get_tag_categories($args);

    5. // 输出我们获取到的关联分类,以列表形式打印
    6. $content .= "<ul>";
    7. if(!empty($categories)) {
    8.   foreach ($categories as $category) {
    9.     $content .= "<li><a href="".get_category_link( $category->term_id )."">".$category->name."</a></li>";
    10.   }
    11. }
    12. $content .= "</ul>";
    13. echo $content;
    复制代码



    会员购买:>> 点击购买 << | 魔扣币购买:>> 点击购买 <<
    承接业务:服务器代维丨网站托管丨SEO
    联系客服:微信:morko-net | QQ:1367681973

    该用户从未签到

    1

    主题

    249

    回帖

    500

    积分

    高级魔扣

    Rank: 4

    魔扣币
    250
    贡献
    250
    威望
    0
    发表于 2017-6-14 18:27:49 来自手机 | 显示全部楼层
    真心的祝福你:开心每一天,快乐每一刻,好运永远与你相伴!真诚希望你每一个今天都过得幸福!魔扣源码论坛更希望你每一个明天都能比今天还快乐!

    该用户从未签到

    1

    主题

    293

    回帖

    588

    积分

    高级魔扣

    Rank: 4

    魔扣币
    294
    贡献
    294
    威望
    0
    发表于 2017-10-28 10:48:45 | 显示全部楼层
    没有一百分的另一半,只有五十分的两个人。',

    该用户从未签到

    0

    主题

    267

    回帖

    536

    积分

    高级魔扣

    Rank: 4

    魔扣币
    269
    贡献
    269
    威望
    0
    发表于 2017-12-22 13:57:49 | 显示全部楼层
    友谊是纷菲春雨,滋润心田;友谊是浩瀚的海洋,博大情深;友谊是蓝天上的白云,绚丽多姿;友谊是陈年佳酿,醇香飘溢;友谊是优美的音乐,乐在其中;魔扣源码论坛愿我们的友谊长在!

    该用户从未签到

    4

    主题

    250

    回帖

    504

    积分

    高级魔扣

    Rank: 4

    魔扣币
    250
    贡献
    250
    威望
    0
    发表于 2018-4-23 09:45:42 来自手机 | 显示全部楼层
    佩服佩服!

    该用户从未签到

    2

    主题

    263

    回帖

    528

    积分

    高级魔扣

    Rank: 4

    魔扣币
    263
    贡献
    263
    威望
    0
    发表于 2018-4-26 09:05:48 | 显示全部楼层
    有的人认为坚持会让我们变得更强大,但有时候放手也会。',

    该用户从未签到

    3

    主题

    255

    回帖

    513

    积分

    高级魔扣

    Rank: 4

    魔扣币
    255
    贡献
    255
    威望
    0
    发表于 2018-6-14 13:14:01 | 显示全部楼层
    风,吹着想念;云,裹着爱恋;山,藏着真心;水,流着柔情;雨,飘着浪漫;雾,漫着赤诚;您,怀着温馨;我,揣着思念;魔扣源码论坛祝愿我的好朋友天天开心快乐!

    该用户从未签到

    0

    主题

    253

    回帖

    506

    积分

    高级魔扣

    Rank: 4

    魔扣币
    253
    贡献
    253
    威望
    0
    发表于 2018-6-21 13:19:32 | 显示全部楼层
    真诚的朋友,虽然遥远。但心绪相牵!纯真的友谊,即是难聚仍然温馨美甜!健康是最佳的礼物;关心是最真挚的问候;牵挂是最无私的思念;祝福是最美好的话语;魔扣源码论坛,远方的我,时时为你衷心的祈祷,祝好朋友事事如意、天天快乐!

    该用户从未签到

    0

    主题

    271

    回帖

    543

    积分

    高级魔扣

    Rank: 4

    魔扣币
    272
    贡献
    272
    威望
    0
    发表于 2018-11-13 19:51:27 | 显示全部楼层
    好帖必须得顶起
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表