Advanced Custom Fields
下载地址:https://wordpress.org/plugins/advanced-custom-fields
安装启用后,在后台左边新增了一个菜单叫字段。
基本情况:
- 新建一个字段组,组里面新建1到 n 个字段,然后将字段组关联到POST上(这里的关联规则相当丰富)
- “选项”的“样式”设置有“无MetaBox”和“标准MetaBox”,没搞明白区别
- 修改文章时在文章编辑框下方就可以看到自定义的字段了,不需要输入字段名,这个比默认的自定义字段省事。
- 保存后数据会存放到
wp_postmeta
表,并没有在wp_posts
表中新增字段 - 一篇文章的一个字段在
wp_postmeta
表中会对应两条记录,而且 key为中文,这个不太友好 - 使用后新建的字段会出现在 默认自定义字段的下拉列表里,而且一个字段在下拉列表里出现两项,一项是唯一 ID,另外一项是中文名,这就更不友好了,不光如此,发现还带来了position、layout、hide_on_screen、rule等字段。发现自定义字段的下拉列表的显示逻辑是
wp_postmeta
不以下划线开头的所有meta_key
:
select distinct meta_key from wp_postmeta t where t.meta_key not like '\_%'
//下划线要转码
Advanced Custom Fields
是这样保存字段组基本信息的,在文章表中建立一条标题为字段组名字、内容为空的记录,该字段组的详细配置数据存放在wp_postmeta
表,通过post_id
关联。
参考:http://www.wpdaxue.com/advanced-custom-fields.html
Simple Fields
下载地址:https://wordpress.org/plugins/simple-fields/
安装启用后,设置菜单在后台的设置-Simple Fields
同样,保存后文章的数据会存放到wp_postmeta
表,并没有在wp_posts
表中新增字段。
基本情况:
- 新增字段组,增加字段。字段的基本属性就填两项就可以了,一个是 name,可以填中文,这个是在编辑文章时显示的字段名;另外一个是 slug,这个是前台获取该字段的值是使用的,这个 slug 名字可以随意修改(当然前台取值时要跟着修改),因为文章的字段在
wp_postmeta
表是以_simple_fields_fieldGroupID_1_fieldID_2_numInSet_0
这样的方式命名的。 - 需要新建一个关联器,同时还需要设置文章的默认关联器才能生效。这个Simple Fields的关联规则不如
Advanced Custom Fields
强大,Simple Fields
只能对Posts、Pages、Media这3种类型进行设置。 - 使用
Simple Fields
创建的字段不会出现在自带自定义字段的下拉列表里,这个地方要比Advanced Custom Fields
强 - 假定使用插件自定义的字段数量为 n,目测使用
wp_postmeta
后文章在wp_postmeta
表中的自定义数据的字段个数是 n+3;而Advanced Custom Fields
是 2n Simple Fields
的自定义字段的值允许为空- 修改某篇文章的自定义字段时,
Simple Fields
的处理逻辑是先全部删除再全部重建 - 在前台取值的用法
// To get values from a field simple use the function simple_fields_value() like this:
$field_value = simple_fields_value("slug_of_field");
// You can even pass meny slugs to retrieve array of values:
$field_value = simple_fields_value("slug_of_field1, another_slug, and_a_third_slug"); - 弊端:不像自带的自定义字段,不管填不填写,这个每篇文章都会在
wp_postmeta
表增加数据,如果文章多,会造成wp_postmeta
表迅速膨胀。
参考:
http://simple-fields.com/documentation/getting-started/tutorial/
Smart Custom Fields
下载地址:https://srd.wordpress.org/plugins/smart-custom-fields/
- 创建的字段组必选关联文章类型例如POST才能生效,在右下角勾选文章类型
- 字段组配置信息的保存方式和
Advanced Custom Fields
类似,都是在wp_posts
文章表中建立一条标题为字段组名字、内容为空的记录,该字段组的详细配置数据存放在wp_postmeta
表,通过post_id
关联 - 会导致 wp 默认自定义字段的下拉列表中出现smart-cf-setting、smart-cf-condition-post-ids、smart-cf-condition等字段
- 文章自定义字段wp_postmeta表中的 key 是按字段的实际名字保存的,因此字段名字不能像
Simple Fields
那样可以随意修改
参考:
https://www.imd-net.com/blog/2014/12/15-210937/
综合结论
Simple Fields不会污染 WordPress 自带自定义字段下拉菜单,且在 wp_postmeta 表的数据比Advanced Custom Fields
少一半,还可以随意修改字段名字而不会影响已有数据,另外考虑到Simple Fields对我来说功能够用,暂时不需要Advanced Custom Fields
那么强大的自定义功能,Smart Custom Fields
既没有Advanced Custom Fields
功能强大,又不具备Simple Fields
的优点,因此Simple Fields
是我的首选。