当前位置:
  1. 首页 »
  2. 知识 »
  3. 正文

WordPress获取分类函数get_terms()、get_categories()、wp_list_categories()

零分 2,469

get_terms()

get_terms(数组|字符串 $args = 数组(), 数组|字符串 $deprecated = ” )

get_terms()不仅可以获取分类,还可以获取标签,分类:category,标签:post_tag

在 4.5.0 之前,第一个参数get_terms()是分类法或分类法列表:

$terms = get_terms( 'post_tag', array(
    'hide_empty' => false,
) );

从 4.5.0 开始,分类法应该通过$args数组中的 ‘taxonomy’ 参数传递:

$terms = get_terms( array(
    'taxonomy' => 'post_tag',
    'hide_empty' => false,
) );

所以从4.5.0开始,get_terms使用get_terms($array),获取标签:taxonomy=>post_tag,获取分类:taxonomy=>category。

常用参数:

taxonomycategory/post_tag ,不填默认返回所有分类和标签
orderby默认值为’name’,可以是名称,计数或空(使用term_id)
order默认值为ASC。有效值也包括DESC。
hide_empty默认值为true。不返回空$terms。
fields默认值为all
slug任何含有slug的term都可以作为该变量的值。默认为空字符串。
hierarchical是否返回层级分类法。默认值为true。
name_like默认值为空字符串。
pad_counts默认值为FALSE。值为true时将计算包括$terms在内的所有子辈。
get默认值为空。可通过为’all’赋值来改写’hide_empty’和’child_of’。
child_of默认值为0。获取该term的所有后代。
parent默认值为0。获取该term的直系子辈(即上辈明确为该值的term)。

get_categories

通过函数get_categories()就可以输出 WordPress 获取所有分类列表。

<?php $categories = get_categories( $args ); ?>

$args默认值

<?php
$args = array(
'type' => 'post',
'child_of' => 0,
'parent' => '',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'taxonomy' => 'category',
'pad_counts' => false
);
?>

参数说明:

type(字符)post和link 其中link在新版3.0以后已被弃用
child_of(整数)仅显示标注了编号的分类的子类。该参数无默认值。使用该参数时应将hide_empty参数设为false
parent(整数)只显示某个父级分类以及下面的子分类(注:子分类只显示一个层级)。
orderby(字符)将分类按字母顺序或独有分类编号进行排序。默认为按分类 编号排序包括ID(默认)和Name
order(字符)为类别排序(升序或降序)。默认升序。可能的值包括asc(默认)和desc
hide_empty(布尔值)触发显示没有文章的分类。默认值为true(隐藏空类别)。有效的值包括:1(true)和0(false)
hierarchical(布尔值)将子类作为内部列表项目(父列表项下)的层级关系。默认为true(显示父列表项下的子类)。有效值包括1 (true)和0(false)
exclude(字符)除去分类列表中一个或多个分类,多个可以用逗号分开,用分类ID号表示
include(字符)只包含指定分类ID编号的分类。多个可以用逗号分开,用分类ID号表示
number(字符)将要返回的类别数量
pad_counts(布尔值)通过子类中的项来计算链接或文章。有效值包括1(true)和0(false),0为默认
taxonomy(字符)返回一个分类法,这个是wordpress3.0版本后新添加的一个参数。返回的值包括category(默认)和taxonomy(一些新定义的分类名称)

wp_list_categories()

显示或检索类别的 HTML 列表。wp_list_categories( string|array $args = ” )

默认用法及参数说明

<?php
 wp_list_categories( $args ); 
$args = array(
 'show_option_all'  => '',//是否列出分类链接
 'orderby'      => 'name',//按名称排列
 'order'       => 'ASC',//升、降序
 'style'       => 'list',//是否用列表(ul>li)
 'show_count'     => 0,//是否显示文章数量
 'hide_empty'     => 1,//是否显示无日志分类
 'use_desc_for_title' => 1,//是否显示分类描述
 'child_of'      => 0,//是否限制子分类
 'feed'        => '',//是否显示rss
 'feed_type'     => '',//rss类型
 'feed_image'     => '',//是否显示rss图片
 'exclude'      => '',//排除分类的ID,多个用',(英文逗号)'分隔
 'exclude_tree'    => '',//排除分类树,即父分类及其下的子分类
 'include'      => '',//包括的分类
 'hierarchical'    => true,//是否将子、父分类分级
 'title_li'      => __( 'Categories' ),//列表标题的名称
 'show_option_none'  => __('No categories'),//无分类时显示的标题
 'number'       => null,//显示分类的数量
 'echo'        => 1,//是否显示,显示或者返回字符串
 'depth'       => 0,//层级限制
 'current_category'  => 0,//添加一个没有的分类
 'pad_counts'     => 0,//这个我也不明白
 'taxonomy'      => 'category',//使用的分类法
 'walker'       => null//用于显示的类
?>

参数说明:

show_option_all指定站点首页的超链接,首页的名称(字符串)
order升序或降序,ASC升序(默认)、DESC降序
style分类列表显示的样式,list输出li,none 使用标签分隔列表项
show_count是否显示文章数量(true|false,1|0)
hide_empty是否隐藏没有文章的分类(true|false,1|0)
use_desc_for_title是否在链接显示 title 属性(true|false,1|0)
child_of只显示此参数确定的分类的子分类,为8显示ID为8的分类的子分类,为0则显示分类的所有子类
exclude排除一个或多个分类。使用逗号分隔每个分类的ID,参数 include 必须为空。
exclude_tree排除分类树。使用逗号分隔每个分类的ID,参数 include 必须为空。
include只显示特定的分类,使用逗号分隔每个分类的ID
hierarchical是否按层级显示分类(true|false,1|0)
title_li设置列表的标题,默认为“Categories”。 传递空字符串禁用
echo显示结果或保存在一个变量里(true|false,1|0)
depth显示分类的深度(即显示多少层的子分类)
0 – 所有分类和子分类(默认)
-1 – 所有类别显示在平面(不缩进)的形式(覆盖hierarchical)。
1 – 只显示顶级分类
n – 任意大于1的值,根据n的具体数字来显示对应等级的分类。
current_category默认为0,在当前分类下加样式值,便于美化 为0则根据页面动图添加当前样式值,填指定分类id,则仅在指定分类中添加样式值
pad_counts父分类的文章数是否包括子分类的链接或文章数。(true|false,1|0)
taxonomy给定分类法,默认category

所有参考参数:

taxonomy(string|string[])分类名称或分类名称数组,结果应限制在其中。category/post_tag ,不填返回分类和标签
object_ids(int|int[])对象 ID,或对象 ID 数组。结果将仅限于与这些对象相关的术语。
orderby(string)用于排序术语的字段。接受: 术语字段(’name’、’slug’、’term_group’、’term_id’、’id’、’description’、’parent’、’term_order’)。除非$object_ids不为空,否则“term_order”与“term_id”被视为相同。 ‘count’ 使用与术语关联的对象的数量。 “包括”以匹配$include参数的“顺序”。 ‘slug__in’ 以匹配$slug参数的 ‘order’。 “元值” ‘meta_value_num’。 的值$meta_key。 的数组键$meta_query。 ‘none’ 省略 ORDER BY 子句。默认“名称”。
order(string)是否按升序或降序对术语进行排序。接受“ASC”(升序)或“DESC”(降序)。默认“ASC”。
hide_empty(bool|int)是否隐藏未分配给任何帖子的术语。接受 1|true 或 0|false。默认 1|真。
include(int[]|string)要包含的术语 ID 的数组或逗号/空格分隔的字符串。默认空数组。
exclude(int[]|string)要排除的术语 ID 的数组或逗号/空格分隔的字符串。如果$include为非空,$exclude则忽略。默认空数组。
exclude_tree(int[]|string)要排除的术语 ID 及其所有后代术语的数组或逗号/空格分隔字符串。如果$include为非空,$exclude_tree则忽略。默认空数组。
number(int|string)要返回的最大术语数。接受 ”|0(全部)或任何正数。默认 ”|0(全部)。
offset(int)术语查询的偏移量。
fields(字符串)要查询的术语字段。接受: ‘all’ 返回完整术语对象的数组 ( WP_Term[])。 ‘all_with_object_id’ 返回带有 ‘object_id’ 参数 ( WP_Term[]) 的术语对象数组。仅在$object_ids填充参数时有效。 ‘ids’ 返回术语 ID 的数组 ( int[])。 ‘tt_ids’ 返回术语分类 ID 的数组 ( int[])。 ‘names’ 返回术语名称数组 ( string[])。 string[]’slugs’ 返回术语 slugs ( )的数组。 ‘count’ 返回匹配项的数量 ( int)。 int[]’id=>parent’ 返回由术语 ID ( )键入的父术语 ID 的关联数组。 ‘id=>name’ 返回术语名称的关联数组,以术语 ID ( string[]) 为键。 ‘id=>slug’ 返回术语 slug 的关联数组,以术语 ID ( string[]) 为键。默认“全部”。
count(bool)是否返回术语计数。如果为真,将优先于$fields. 默认假。
name(string|string[])要为其返回术语的名称或名称数组。
slug(string|string[])要为其返回术语的 Slug 或 slug 数组。
term_taxonomy_id(int|int[])术语分类 ID 或术语分类 ID 数组,用于在查询术语时进行匹配。
hierarchical(bool)是否包含具有非空后代的术语(即使$hide_empty设置为 true)。默认为真。
search(string)搜索条件以匹配术语。将在前后使用通配符进行 SQL 格式化。
name__like(string)检索具有 LIKE 条件的术语$name__like。
description__like(string)检索描述为 LIKE 的术语$description__like。
pad_counts(bool)是否在每个术语的“count”对象变量的数量中填充术语的子项的数量。默认假。
get(string)是否返回术语而不考虑祖先或术语是否为空。接受“全部”或“”(禁用)。
child_of(int)检索子术语的术语 ID。如果通过了多个分类,$child_of则忽略。默认为 0。
parent(int)要检索其直接子项的父项 ID。
childless(bool) True 将结果限制为没有子项的项。此参数对非分层分类法没有影响。默认假。
cache_domain(string)当此查询存储在对象缓存中时要生成的唯一缓存键。默认“核心”。
update_term_meta_cache(bool)是否为匹配项设置元缓存。默认为真。
meta_key(string|string[])要过滤的元键或键。
meta_value(string|string[])要过滤的元值或值。
meta_compare(string) MySQL 运算符,用于比较元值。
meta_compare_key(string) MySQL 运算符,用于比较元键。
meta_type(string) meta_value 列将被 CAST 用于比较的 MySQL 数据类型。
meta_type_key(string) meta_key 列将被 CAST 用于比较的 MySQL 数据类型。
meta_query(array) WP_Meta_Query参数的关联数组。

wordpress禁用REST API导致古腾堡编辑器发布文章出错问题

wordpress禁用REST API,在function.php中加入以下代码: add_filter("json_enabled", "__return_false"); add_filter("json_jsonp_enabled", "__return_false"); add_filter("rest_enabled", "__return_false"); add_filter("rest_jsonp_enabled", "__return_false"); remove_action("init", "rest_api_init"); remove_action("rest_ap
笔记 1,380

wordpress 后台主题设置选项按钮(button、input submit)点击屏蔽提交事件禁止刷新

wordpress 后台主题设置选项按钮(button、input submit)点击屏蔽提交事件禁止刷新 如果在设计主题或者插件后台设置选项时,wordpress后台的按钮(button、input submit)默认是提交操作,如只是响应JS事件,需要屏蔽提交,防止页面刷新。e.preventDefault(); 完整示例: $("button.copy").on("click",function(e){ e.preventDefault(); JS操作 });
笔记 1,262

wordpress 过滤垃圾评论有效方法

wordpress不管站是什么样的,只要开启了评论,就会有垃圾评论来光顾。这些垃圾评论,都有一个共同点,那就是全英文。 既然是全英文,对于国人,那就暴力一点,直接过滤点不含中文的评论。 在主题functions.php中添加: function my_comment_spam_filter($comment_id) { $comment = get_comment($comment_id); if (!preg_match('/[\x{4e00}-\x{9fa5}]/u',$comment->comment_content)) { wp_delete_com
笔记 2,419

wordpress评论模块,好久没写过了,大概是忘记了

不知道什么时候开始,或许是因为备案要求不能有交互式内容吧,自用模板都没有写评论模块 或许还有一个原因,就是垃圾评论太多了 很多网站都设置了登录才能评论,也别说评论了,现在估计也很少写文字了​。 今天要写一个留言板,需要评论模块,感觉都忘记了,查了下wordpress的评论模块函数 comment_form()​:评论表单 wp_list_comments()​:帖子列表 刚开始放上去,没有输出,依稀记得,wordpress是有内置表单的,不可能不会有输出的问题​。 这个评论是放在页面上的,理论上和文章模块都是一样的。原本以为是不支持页面,放文章页,也是不显示,​到后台看了下,原来是关闭了评论。
随笔 2,767

wordpress 分类页获取分类名称及该分类信息并显示文章数量

有一个这样的需求,要在分类页显示该分类下的所有文章数量,网上的写法大致都是用循环去叠加该分类下子分类的文章数量。 但是,其实最简单的写法是自己调用内置函数获取文章数量,包括在首页显示全站的所有文章数量。 $wp_query->found_posts 为了验证这个函数,我特意建立了一个空白的主题,在每个页面上都打印出 $wp_query 这个函数。 wordpresss主题主要的几个文件: header:页头 footer:页脚 index:主页 category:分类页 single:文章模板 page:页面模板 search:搜索模板 tag:标签模板 functions:函数文件 head
笔记 1,884