WordPress 中,我们可以很轻松的使用插件或者写代码为文章或页面添加自定义字段。可能是因为使用的场景不多,支持为媒体添加自定义字段的插件和教程确很少。
在这篇文章中,我们一起来看一下怎么为 WordPress 媒体添加自定义字段。实现代码其实很简单,也完全没必要用插件来实现。最终实现的效果如下图所见。
首先,为媒体添加自定义字段表单
在下面的代码中,我们使用 attachment_fields_to_edit Hook 为媒体添加了一个 video_url 表单。
- add_filter('attachment_fields_to_edit', 'add_video_url_field_to_media_uploader', 10, 2);
- function add_video_url_field_to_media_uploader($form_fields, $post)
- {
- $form_fields[ 'video_url' ] = [
- 'label' => __('Video URL', 'woocommerce'),
- 'input' => 'text',
- 'value' => get_post_meta($post->ID, '_video_url', true),
- 'helps' => __('Enter the URL of the product video if this image represents a video.', 'woocommerce'),
- ];
- return $form_fields;
- }
保存数据到媒体字段中
然后,我们使用 attachment_fields_to_save Hook,在保存媒体数据的时候,顺便把前端提交过来的自定义字段的值保存在媒体自定义字段中即可。
- add_filter('attachment_fields_to_save', 'save_video_url_field_to_media_uploader', 10, 2);
- function save_video_url_field_to_media_uploader($post, $attachment)
- {
- if (isset($attachment[ 'video_url' ])) {
- update_post_meta($post[ 'ID' ], '_video_url', esc_url_raw($attachment[ 'video_url' ]));
- }
- return $post;
- }
如此,我们就实现了为 WordPress 媒体添加自定义字段的功能。需要注意的是,上面代码中的$post,不是指的每一篇文章,而是保存着媒体数据的「媒体自定义文章类型」。
添加保存了自定义字段之后,具体怎么使用,我们根据业务需求去调用这个媒体字段,然后做判断和显示即可。除了媒体自定义字段,本站之前的文章 以编程方式获取附件 Alt 文本、标题、描述和名称 中,还介绍了怎么获取媒体的其他数据,有需要的朋友可以参考。