WordPress给分类添加自定义栏目的方法

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

     之前我写了一篇文章WordPress给文章添加固定字段,有网友给我留言说,既然文章可以添加自定义字段,那WordPress能不能实现分类目录添加固定字段呢?分类目录只有名称、别名、父级、描述这几个项目,比如我有一个电影分类,想再添加个电影分类的缩略图或者分类关键字就没法加了,本文就解决了这样的问题。

一、插件

     Category Meta plugin,功能比较强大,可以用于给分类、标签、自定义菜单、链接分类等添加自定义栏目,支持单行/多行文本框、多选框以及图片上传。

使用方法

     激活插件后,进入后台 - 设置 - Category Meta,这里可以创建/管理你添加的自定义栏目。

Category Meta

Meta Name:添加自定义栏目的名称(用英文);
Sanitize meta name:一般都勾选吧;
Meta Type:选择自定义栏目的类型,包括Text单行文本框、Text Area多行文本框、Image图片上传、Check Box多选框
Meta Toxonomy:是要添加自定义栏目的地方,可选择category分类、post_tag标签、nav_menu菜单、link_category链接标签、post_format

     最后,点击Add Meta,就可以添加想要的自定义栏目了。如我们Meta Toxonomy选的是category,那么在文章 - 分类目录下就可以看到刚才添加的自定义栏目color了。

Term Meta

     如何调用这个自定义栏目的值呢,可以使用下面php代码即可:

if (function_exists('get_terms_meta')) {
  // $category_id是分类id,$meta_key是自定义栏目名称(就是你上面填的Meta Name)
  $metaValue = get_terms_meta($category_id, $meta_key);
  echo $metaValue[0];
}

     如在主题目录下,一般分类目录所使用的模板是category.php或这是archive.php,那么我们可以在这些php文件中添加代码:

if ( is_category() ) {
	if (function_exists('get_terms_meta')) {
		// get_query_var('cat')是当前分类id,color是我使用的自定义栏目名称(就是上面填的Meta Name)
		$metaValue = get_terms_meta(get_query_var('cat'), 'color');
		echo $metaValue[0];
	}
}

二、教程

     下面这篇教程实现的功能比较强大,但是需要你对php代码有一点了解,当然还要会看点英文:WordPress taxonomies extra fields the easy way

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-taxonomies-extra-fields-the-easy-way.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

31 条留言

点此留言
  1. Louis Han Louis Han

    暂时没有这样的需要

  2. 影评网 影评网

    恕我愚钝,有点看不明白,可否给例子?

  3. Ludou

    @影评网 分类目录只有名称、别名、父级、描述这几个项目,比如你的电影分类,想再添加个电影分类的缩略图就没法加了,本文就解决了这的问题。

  4. 影评网 影评网

    @Ludou 哗……太感谢了。

  5. douyu douyu

    不错,我不是来交换链接的,我把你的网站放在我友链里面了,只是想更多的人看到这技术博客和喜欢帮助的热心男人

  6. K_mgial

    博主 能分享一下,自己限制非本人用户登陆后台的方法吗?
    403 Forbidden 禁止访问
    You don't have permission to access this page. 你没有权限访问此页面

  7. 侯永禄 侯永禄

    “多好文本框”应该是“多行文本框”吧,出现不止一次呢!呵呵

  8. Ludou

    @侯永禄 感谢提醒

  9. 狐狸儿 狐狸儿

    自己限制非本人用户登陆后台的方法吗

  10. Ludou

    @狐狸儿 如果你使用固定IP就可以

  11. chonghua chonghua

    不知道大侠分类的描述是怎样做的呢!

  12. Ludou

    @chonghua 手写静态html代码

  13. 椒盐虾 椒盐虾

    技术贴!

  14. 毛主席夸我帅 毛主席夸我帅

    老大,有給文章添加自定义字段的插件吗?

  15. Ludou

    @毛主席夸我帅 文章编辑页,就有自定义栏目的添加框。

    如果想给所有文章添加自定义栏目,在phpmyadmin中运行SQL语句即可(MyCustomField改成栏目名称,myvalue改成值):

    INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
    SELECT ID AS post_id, 'MyCustomField'
    AS meta_key 'myvalue AS meta_value
    FROM wp_posts WHERE ID NOT IN
    (SELECT post_id FROM wp_postmeta WHERE meta_key = 'MyCustomField')
    “ AND post_type = 'post';

  16. Ludou

    @毛主席夸我帅 PS:你的网站很好很强大

  17. laiydesign

    现在这个图片字段不能使用了呀,怎么处理下就能用了呀???请求帮助。。

  18. Ludou

    @laiydesign 抱歉,这款插件不是我写的,暂时找不到修改方法。

  19. 侯永禄 侯永禄

    露兜,请教你一个问题,如何将上面的功能套进下面这段代码中,因为这样做也比较实用。输出分类连分类信息一起输出。先谢谢你。

    $cats = get_categories();
    foreach($cats as $cat) {
    echo '<li><a href="'.get_category_link($cat->term_id).'">'.$cat->name.$cat->slug.'</a></li>';
    }

  20. Ludou

    @侯永禄 $cats = get_categories();
    foreach($cats as $cat) {
    echo '<li><a href="'.get_category_link($cat->term_id).'">'.$cat->name.$cat->slug.'</a></li>';
    $metaValue = get_terms_meta($cat->term_id, '这里改成字段名称');
    echo $metaValue[0];
    }

    PS:请自学PHP

  21. 侯永禄 侯永禄

    @Ludou 谢谢你。

  22. Kelvin

    做多层级筛选,能用这个做吗?
    一直想用wordpress实现像那些租房网站一样,可以多层级精确筛选内容,网上找的一些插件要么是选择好搜索后还要点击搜索按钮才可以筛选,要么就是只能对一个目录或者一个tag筛选

  23. Ludou

    @Kelvin 可以用这个

  24. realhood realhood

    请教一个问题
    假如我给10篇文章分别设定了自定义栏目 名称tuijian 值yes。
    我想调用这个自定义栏目名称为tuijian的文章,数量是4篇。
    那我该怎么写代码,百度了下
    [code]
    <?php
    if (get_post_meta($post->ID,"t",true)) { ?>
    <li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
    <?php }?>
    [/code]
    只能调用一篇。
    请露兜赐教

  25. Ludou

    @realhood 用WP_Query,传递参数meta_key、meta_value和posts_per_page即可:
    http://codex.wordpress.org/Class_Reference/WP_Query

  26. realhood realhood

    @Ludou 不好意思,对代码确实不懂,能否给写下。>_=

  27. damao50

    标签 和分类 重复命名 会自动修改?
    如果标签是:wordpress 那么分类就是:wordpress -1

    有什么办法吗?

  28. Ludou

    @damao50 没遇到过。
    https://www.ludou.org/category/wordpress
    https://www.ludou.org/tag/wordpress

  29. 小白

    博主你好,请教二个问题.

    问题一:通过使用
    <?php if (function_exists('get_terms_meta')) {
    // get_query_var('cat')是当前分类id,color是我使用的自定义栏目名称(就是上面填的Meta Name)
    $metaValue = get_terms_meta(get_query_var('cat'), 'color');
    echo $metaValue[0];
    }?>
    可以在分类模板中调用所设置的这个属性,那么如何在文章single页面调用这个属性呢?

    问题二:不同的文章调用不同的single模板,会使用:

    <?php

    $post = $wp_query->post;
    if ( in_category(array("101","102")) ) {
    include(TEMPLATEPATH . '/single_b.php');
    }

    else {
    include(TEMPLATEPATH . '/single_a.php');
    } ?>

    这样的代码去判断分类的ID号来调用不同的模板,但随着新分类的增加,就需要不断的去修改这段代码中的ID号,比较麻烦。

    能不能使用Category Meta plugin插件中的checkbox属性来进行判断呢?这样只需要在增加新分类时,把这个选项选中,这个分类下的文章就自动调用指定的模板。请问这样的代码怎么写呢?

  30. 闲鱼居 闲鱼居

    还在学中

  31. eson

    恕我愚钝,有点看不明白,可否给例子?

发表留言