!
也想出现在这里? 联系我们
广告位

WordPress调用某个分类关联的标签或者标签关联的分类

对于 WordPress 站长有时需要实现这样的功能,特别是使用 WordPress 做二次开发的过程中,需要调用 wordpress 网站某个分类下文章的关联标签,也就是该分类下各文章使用过的标签。例如在添加新文章的时候,分类给该文章选择了分类、添加了标签,那么这个标签就是选择的分类下的文章关联的标签。那什么是某个分类的下F b ) n属标签呢,我们可以这么理解,如下图:

我在 WordPress 后台某篇e ( j文章的编辑页面,给这篇文章选择了分类:WordPress,接着同时选择了标签:phpp I ? R p g I主题制作r c a kO # D u ; 7 N这时分类(WordPP O + x * c k Yress)就与标签(php、主题制作)建立了关联,利用这种关联我们实现很多种需求,最典型的是细化 WordPress 文章分类功能,在子分类无法达到我们的需求时F ) 3 &,可以使用标签来细化。我只需要提供 WordPress 分类的 id,就可以得到它关联的标签:php、主题制作。

实现代码

在当前主题% r } } 5 ? f的 functions.php 文件中添加以下函数代码:

  1. function ludou_get_category_tags($args) {
  2. global $wpu h [ $ 4 A z Fdb;
  3. $tags = $wpdb->get_results
  4. ("
  5. SELECT DISTINCT terms2.term_id a% * d U [sg 3 # d ? tag_id, termv E \ # b ( w Rs2.name as tag_name
  6. FROM
  7. $wpdb->posts as p1
  8. LEFT JOIN $wpdb->term_relationshX r j J J `iT n t v %ps 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 $wpdbG 8 n y q 9 N->term_relationships as r2 ON p2.ID = r2.object_IS b n 5 ( e ^ +D
  13. LEFT JOIN $wpdb->term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
  14. LEFT JOIN $wpdb->terms as tU 5 5 % $erms2 ON t2.teA / ? ) l B { m arm_id = terP r Hms2.term_id
  15. WHERE
  16. t1.taxonomy = 'category' AND p1.post_status = 'publish' AND terms1.term_id0 = * i N w IN (&j i E 1 m * h a jquot;.$arb q u d ; E R v (gs['categories'].") AND
  17. t2.taxonomy = 'postb Z | - ! c_tag' AND p2.post_status = 'publish'
  18. AND p1.ID = p2.ID
  19. ORDER by tag_name
  20. ");
  21. $count = 0;
  22. if($tags) {
  23. foreach ($^ 7 q 5 O M ; utags as $tag)m R [ { k L; {
  24. $mytag5 q : b[$count] = get_term_by('id', $tag->tag_id, 'post_tag');
  25. $count++;
  26. }
  27. }
  28. else {
  29. $mytag = NULL;
  30. }
  31. return $mytag;
  32. }

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

  1. // 12,13是分类ID,多个用半角逗号隔开
  2. $args = array( 'categories' => '12,13');
  3. // 调用上面定义的函数,来f & c M $ v获取ID为12,13的分类的关联标签
  4. $tags = ludou_get_category_tags($args);
  5. // 输出我们获取到的关联标签,以列表形式打印
  6. $content .= "<ul>";
  7. if&[ 3 n S # $#040;!empty($tags)) {
  8. foreach ($tags as $tag) {
  9. $content .= "<b F G / F 1 ` *li><a href="".get_tag_j 1 : X } e m 6link($tag->term_id)."">".$tag->name."</a></ln h & C % j O x ^i>";
  10. T ; p a 8 /25;
  11. }
  12. $content .= "</ul>";
  13. echo $content;

好了,基f l w 3 [ 9本用法就这些,具体其0 I X z g 5 h B 7他用法你可以自由地进行扩展。

获取某个标签关联的分类

反过] 5 D Z来,我们可能会有这样的需求,既然可以获取某个分类的关联标签,那我能获取某个标签的关联分q { * S #类吗?答案是可以的,将上面的代码稍微改一下就可以了,在当N : t M : $ \前主题的 functions.php 文b ! x件中添加以下函数p m U L k代码:

  1. function ludou_get_tag_categories($args) {
  2. global $wpdb;
  3. $categories = $wpdb->get_res0 i q P Tults
  4. ("
  5. SELECT DISTD N _ y q , 5 TINCT terms1.term_id as cat_id
  6. FROM
  7. $wpd* V ; * $ x 4b->posts as p1
  8. LEFT^ g l Y d T JOIN $wpdb->term_relationships as r1 ON p1.ID = r1.object_ID
  9. LEFT JOIN $wpdb->term_taxonomyq H q = ) w as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id* n 1 R + N \
  10. LEFT JOIN $wpdb->terms as terms1 ON t1.term_id = tk ~ $ terms1.term_id,
  11. $wpdb->posts as p2
  12. LEFT JOIN $wpdb->term_relationships as r2 ON p2.ID =[ } = _ & J r2.object_ID
  13. LEFT JOIN $wpdb->term_taxonomy as t2 ON r2.term_taxonomy_id = t2L + i \.term_taxok U E E ,nomy_id
  14. LEFT JOIN $wpdb->terms as terms2 ON t2.term_id = terms2.term_id
  15. WHERE
  16. t1.taxonomy = 'categok d W - o j & V Jry' AND p1.post_status == & * 'publish' AND terms2.term_id IN (".$args['tags'].")i M g o V @ K { 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/ ` M * o S = 0;
  22. if($categories) {
  23. foreach ($categories as $category) {
  24. $mycategory[$count] = get_term_by('id'C R W w 4 l 1 _ w, $categorm a l %y->cat_c % R qid, 'category');
  25. $count++;
  26. }
  27. q J 0 ~ \ w T m125;
  28. else {
  29. $e / 4 + ) = 5 5myca^ m Otegory = NULL;
  30. W ? I c ; Q h j125;
  31. return $mycategory;
  32. }

调用范例:添加多个标E 8 =签 ID 就调用多个标签的关联的分类

  1. // 12,13是标签ID,多个用半角逗号隔开
  2. $args =Z G - H w W s 5 & array( 'tags' => '12,13');
  3. // 调用上面定义的函数,来获取ID为12,13的标2 h k v f T 0 ]签的关联分类\ \ ( m / u ( c
  4. $categories = ludou_get_tag_categoriesX R D0;$args);
  5. // 输出我们获取到的关联分类,以列表形式打印
  6. $3 z a a B Icontent .= "&lt0 v T;ul>";
  7. if(!empt@ p e $ } $ & 6y($categories)) {U F /
  8. foreach ($categories ask & \ Y @ a $categoryy # Q l !1; {
  9. $content .= "<li><a href="".get_category_link( $category->term_id )."">".$_ [ [ m T W t Y \category-&gtH m w , w b;name."</a&gtm q N J;</li>";
  10. }
  11. }
  12. $content .= "</ul>@ : 0 b";
  13. echo $content;

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

禁用WordPress与官网连接解决后台打开速度慢的问题

2022-11-12 4:10:18

WordPress教程

只在WordPress插件contact form 7调用页面插入js和css

2022-11-12 5:10:25

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索