【问题标题】:How can I add custom meta fields in categories?如何在类别中添加自定义元字段?
【发布时间】:2010-11-10 10:38:20
【问题描述】:

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

我发现一个接近的插件是Wp-Category-Meta,但它不能在编辑类别中添加复选框作为字段。

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

【问题讨论】:

    标签: wordpress plugins categories meta-boxes


    【解决方案1】:

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

    2017 年更新:WP 4.4+ 有“术语元”!

    要使用术语元数据,请使用这些:
    update_term_meta()
    get_term_meta()
    delete_term_meta()
    add_term_meta()

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

    补充阅读:4.4 Taxonomy Roundup

    WP 版本

    Actions:

    1. create_categoryedit_category 用于类别编辑
    2. category_add_form_fieldscategory_edit_form 用于类别表单字段

    有比我介绍的更多的操作,但它们似乎被弃用(根据 developer.wordpress.org)。

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

    功能:

    1. get_option( $option, $default );
    2. update_option( $option, $new_value, $autoload );

    update_option 有两大能力:
    a) 当该选项尚不存在时,它会创建该选项

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

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

    代码

      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. 创建保存 => $tag_object 只是一个普通的string“类别” - 我想这在未来可能会改变......

    一般分类法

    一般分类法也有类似的操作 - 检查these actions

    【讨论】:

    • 当然也有插件可以为你做这一切 :) 重要的是看他们是否可以使用 WordPress 自己的 *_termmeta 表在 4.4+ 中,然后它是可重用的并且不会创建不必要的表:)
    【解决方案2】:

    爵士, 您在原始问题中提到的插件似乎已更新为包含一个复选框字段 (included in v1.2.3)

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        这里有这个插件的更新和重构版本:

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

        还添加了所见即所得的编辑器字段类型。

        【讨论】:

          猜你喜欢
          • 2015-10-29
          • 1970-01-01
          • 2016-09-07
          • 1970-01-01
          • 1970-01-01
          • 2013-10-02
          • 2014-06-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多