wordpress自定义标签云与随机获取标签的方法详解_php技巧 - PHP

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习

wp_tag_cloud() 函数的作用是用来标签云的,可以根据每个标签所关联的文章次数来定义字体大小、标签排序等属性。从 2.8 版本开始,添加了 分类法(taxonomy)参数,这就意味着,除了 标签(tags)以外,还可以将 分类(Categories) 或其他 自定义分类法(Custom Taxonomies)作为“云”显示。

用法

<?php wp_tag_cloud( $args ); ?>

默认用法

<?php $args = array( ‘smallest‘ => 8, ‘largest‘ => 22, ‘unit‘ => ‘pt‘, ‘number‘ => 45, ‘format‘ => ‘flat‘, ‘separator‘ => "\n", ‘orderby‘ => ‘name‘, ‘order‘ => ‘ASC‘, ‘exclude‘ => null, ‘include‘ => null, ‘topic_count_text_callback‘ => default_topic_count_text, ‘link‘ => ‘view‘, ‘taxonomy‘ => ‘post_tag‘, ‘echo‘ => true, ‘child_of‘ => null(see Note!) ); ?>

注: child_of 不是一个直接的 wp_tag_cloud 数组的键(Key),但由于这个函数使用 wp_parse_args() get_terms() ,你可以通过 get_terms() 使用所有的数组键。

默认情况下的输出内容:

  • smallest —— 最小的标签(使用次数最少)显示大小为8
  • largest ——最大的标签(使用次数最多)显示大小为22
  • unit —— 最大值最小值的单位为‘pt‘
  • number —— 至多显示45个标签
  • format —— 以平面形式显示所有标签(标签之间用空格隔开)
  • separator —— 显示标签之间的空格
  • orderby —— 按名称为标签排序
  • order —— 以升序排列
  • exclude —— 不排除任何标签
  • include —— 包括所有标签
  • topic_count_text_callback —— 使用函数 default_topic_count_text
  • link —— 可视
  • taxonomy —— 用文章的标签作为云基础
  • echo —— 输出结果

但由于该方法把样式集合到了里面,使用起来不怎么友好,如果想自定义读取标签并修改展示样式该怎么做呢,那也是非常简单的,看代码实例,这里根据get_tags来获取:

$html = ‘<ul class="post_tags">‘;
foreach (get_tags( array(‘number‘ => 50, ‘orderby‘ => ‘count‘, ‘order‘ => ‘DESC‘, ‘hide_empty‘ => false) ) as $tag){
 $color = dechex(rand(0,16777215));
 $tag_link = get_tag_link($tag->term_id);
 $html .= "<li><a href=‘{$tag_link}‘ title=‘{$tag->name} Tag‘ class=‘{$tag->slug}‘ style=‘color:#{$color}‘>";
 $html .= "{$tag->name} ({$tag->count})</a></li>";
}
$html .= ‘</ul>‘;
echo $html;

如果要求随机获取标签在首页显示,那可以使用以下代码,但这种做法貌似不利于seo,可得慎重使用

//获取随机标签
function get_rand_tags()
{
 global $post, $wpdb;
 $sql = "SELECT * FROM {$wpdb->prefix}terms wt INNER JOIN {$wpdb->prefix}term_taxonomy wtt on wt.term_id=wtt.term_id where wtt.taxonomy=‘post_tag‘ ORDER BY RAND() LIMIT 20";
 $related_posts = $wpdb->get_results($sql);
 $html = ‘<ul class="post_tags">‘;
 foreach($related_posts as $tag)
 {
 $color = dechex(rand(0,16777215));
 $tag_link = get_tag_link($tag->term_id);
 $html .= "<li><a href=‘{$tag_link}‘ target=‘_blank‘ title=‘{$tag->name} Tag‘ class=‘{$tag->slug}‘ style=‘color:#{$color}‘>";
 $html .= "{$tag->name} ({$tag->count})</a></li>";
 }
 $html .= ‘</ul>‘;
 echo $html;
}

获取随机标签用get_tags函数怎么变化参数都是没法获取到的(反正我是获取不到,欢迎大神留言指导),结果最后就用的sql连接表查询就搞出来了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对敏而好学论坛/嗨学网的支持。如果你想了解更多相关内容请查看下面相关链接

原文地址是:http://www.piaodoo.com/thread-3550-1-1.html

原文地址:https://www.cnblogs.com/txdah/p/12093264.html

时间: 2024-10-17 10:34:47

wordpress自定义标签云与随机获取标签的方法详解_php技巧 - PHP的相关文章

“全栈2019”Java多线程第三十章:尝试获取锁tryLock()方法详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第三十章:尝试获取锁tryLock()方法详解 下一章 "全栈2019"Java多线程第三十一章:中断正在等待显式锁的线程 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复

Android获取系统时间方法详解

Android获取系统时间方法的方法有很多种,常用的有Calendar.Date.currentTimeMills等方法. (1)Calendar Calendar获取系统时间首先要用Calendar.getInstance()函数获取一个实例,再为该实例设定时区(中国的时区为GMT+8:00),最后使用Calendar.get()函数获取时间的具体信息,如年,月,日,小时,分,秒,星期几. package com.hzhi.time_example; import java.util.Cale

Linux学习之命令行获取公网IP方法详解

本文和大家分享的主要是主要是linux命令行获取公网IP相关内容,一起来看看吧,希望对大家学习linux有所帮助. curl ipinfo.io $ curl ipinfo.io { "ip": "36.10.25.4", "city": "Hangzhou", "region": "Zhejiang", "country": "CN", &quo

HTML中javascript的&lt;script&gt;标签使用方法详解

原文地址:HTML中javascript的<script>标签使用方法详解 只要一提到把JavaScript放到网页中,就不得不涉及Web的核心语言--HTML.在当初开发javascript的时候,Netscape要解决的一个重要问题就是如何做到让JavaScript既能与HTML页面共存,又不影响那些页面在其他浏览器中的呈现效果.经过尝试.纠错和争论,最终的决定就是为Web增加统一的脚本支持.而Web诞生早期的很多做法也都保留了下来,并被正式纳入HTML规范当中. <script&g

spring获取webapplicationcontext,applicationcontext几种方法详解(转)

方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId"); 说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况. 方法二:通过Spring提供的工具类获取ApplicationConte

PDO中获取结果集之fetchColumn()方法详解

fetchCloumn()方法是获取结果集中下一行指定列的值,从结果集中的下一行返回单独的一列.直线电机品牌 那么我们在前面两篇文章<PDO中获取结果集之fetchAll()方法详解>和<PDO中获取结果集之fetch()方法详解>中我们介绍了两种类似的PDO中获取结果集的方法,那么我们接下来跟大家介绍fetchColumn()方法! 下面我们先看下fetchColumn()方法的语法格式如下: 1 string PDOStatement::fetchColumn ([ int $

PDO中获取结果集之fetchAll()方法详解

fetchAll()方法是获取结果集中的所有行,返回一个包含结果集中所有行的二进制数组!大理石机械构件维修厂家 那么在上一篇<PDO中获取结果集之fetch()方法详解>中,我们介绍了fetch()方法获取结果集,我们今天将要介绍的fetchAll()方法与上一个方法fetch()类似,但是该方法只需要调用一次就可以获取结果集中的所有行,并赋给返回的数组(二维). fetchAll()方法的语法格式如下: 1 array PDOStatement::fetchAll ([ int $fetch

让wordpress标签云显示文章数的正确方法

先看一下效果 在百度经验找到一个教程,可惜,根据实践发现方法是错误的, 百度经验上的代码: 1 2 3 4 5 6 7 8 9 10 11 12 //标签tag所包含的文章数量 function Tagno($text) { $text = preg_replace_callback('|<a>|i', 'tagnoCallback', $text); return $text; } function tagnoCallback($matches) { $text=$matches[1]; p

MySQL随机获取数据的方法,支持大数据量

最近做项目,需要做一个从mysql数据库中随机取几条数据出来. 总所周知,order by rand 会死人的..因为本人对大数据量方面的只是了解的很少,无解,去找百度老师..搜索结果千篇一律.特发到这里来,供大家学习. 在mysql中带了随机取数据的函数,在mysql中我们会有rand()函数,很多朋友都会直接使用,如果几百条数据肯定没事,如果几万或百万时你会发现,直接使用是错误的.下面我来介绍随机取数据一些优化方法. SELECT * FROM table_name ORDER BY ran