如何在类别中添加自定义元字段?

时间:2010-11-10 10:38:21

标签: wordpress plugins categories meta-boxes

有没有人知道如何在制作类别时添加自定义元字段并在WordPress的循环中获取它们?我想知道如何在不破解WordPress核心的情况下做到这一点,但如果我这样做 - 它将不会成为未来更新WordPress的障碍。

我发现接近的插件是Wp-Category-Meta,但它无法将复选框添加为编辑类别中的字段。

screenshot

这将非常有用,因为用户可以使某些类别“特色”,然后代码可以在循环中使用该元值来不同地设置“特色”类别。

4 个答案:

答案 0 :(得分:3)

问题: Wordpress没有结构或方法来存储分类法的“元”值。

2017年更新:WP 4.4+有“term meta”!

使用term metas时请使用以下命令:
update_term_meta()
get_term_meta()
delete_term_meta()
add_term_meta()

下面的操作仍然有效! :)

补充阅读:4.4 Taxonomy Roundup

WP版本< = 4.3.x和COMMON操作

的解决方案

Actions:

  1. create_categoryedit_category类别修改
  2. category_add_form_fieldscategory_edit_form类别表单字段
  3. 我提供的动作比我提出的要多,但它们似乎已弃用(根据developer.wordpress.org)。

    我选择我选择的行动的原因是:
    - 他们在WordPress 4.4.2上工作
    - 由于缺乏文件,我认为这些是取代已弃用文件的新文件......

    功能:

    1. get_option( $option, $default );
    2. update_option( $option, $new_value, $autoload );
    3. update_option有两个很棒的能力:
      a)当这种选择尚不存在时,它会选择该选项

        

      除非你需要指定add_option()的可选参数,   update_option()对于添加和更新都是一个非常有用的方法   选项。

      b)$new_value 可以是整数,字符串,数组或对象。
      你可能会问,为什么要使用数组/对象? ......好吧,因为每个选项= 1数据库行=>您可能希望将类别选项存储在一个行中:)

      代码

        function my_category_form_fields($tag_object){
          //output/display extra form fields, e.g. by echo ...
          //ADD EXTRA SPECIFIC FIELD TO LATER CHECK IF IT'S CATEGORY SAVE/EDIT!
          //(see note at 'edit_category' action...)
      
          if( !empty($tag_object['term_id']) ){
            //edit category form specific
            //...load existing options with get_option( $option, $default );
          } else {
            //create category form specific
          }
        }
      
        function my_category_save(){
          //CHECK FOR YOUR EXTRA SPECIFIC FIELD TO CHECK IF IT'S CATEGORY SAVE/EDIT
          //(see note at 'edit_category' action...)
      
          //SECURITY CHECK
          if( empty($_POST['EXTRA_SPECIFIC_FIELD']) || ! current_user_can('manage_categories') )
             return null;
      
          //save your form values using update_option()
          //Recommendation:
          //Add "category_" prefix and $category_id to your option name!
        }
      
        add_action( 'create_category', 'my_category_save', 10, 1 ); 
      
        //Runs when a category is updated/edited,
        //INCLUDING when a post or blogroll link is added/deleted or its categories are updated
        //(which causes the count for the category to update)
        add_action( 'edit_category',   'my_category_save', 10, 1 ); 
      
        add_action( 'category_add_form_fields', 'my_category_form_fields', 10, 1 ); 
        add_action( 'category_edit_form',       'my_category_form_fields', 10, 1 ); 
      

      创建或编辑?

      你可能想知道你是在创建还是保存一个类别 - 这还没有记载(据我所知),但来自测试:

      1. 修改保存=> $tag_objectobject并包含一些属性,最值得注意的是:
        • term_id
        • taxonomy
        • filter
      2. 创建save => $tag_object只是一个常规string“类别” - 我想这可能会在未来发生变化......
      3. 一般分类

        一般来说,对于分类法也会有类似的行为 - 请检查these actions

答案 1 :(得分:2)

的Jaz, 看起来您在原始问题中提到的插件已更新为包含复选框字段(included in v1.2.3

答案 2 :(得分:1)

我认为Category SEO Meta Tags插件会对您有所帮助。

答案 3 :(得分:1)

此插件的更新和重构版本可在此处找到:

https://wordpress.org/plugins/custom-taxonomy-category-and-term-fields/

还添加了WYSIWYG编辑器字段类型。