在一个项目中,我们创建了一个完全由WordPress的附件和一个自定义的帖子类型为基础的非常酷的画廊,我们发现需要添加额外的字段到WordPress的媒体上传。 这些额外的字段允许我们给每个摄影师的信贷添加摄影师的名字,以及在每个图像页面上的URL。 WordPress将图像作为附件帖子中的帖子存储,因此添加元数据就像添加自定义字段一样。 由于WordPress附件没有自定义字段UI,因此我们必须向媒体上传器添加自定义字段以收集元数据。 在本文中,我们将向您展示如何将其他字段添加到WordPress媒体上传器。
我们将使用以下过滤器进行更改: attachment_fields_to_edit 和 attachment_fields_to_save
对于这样的项目,我们强烈建议您创建一个特定于站点的插件并添加以下代码。 但是,你仍然可以在你的主题的functions.php文件中添加代码,使其工作。
/ ** *添加摄影师名称和网址字段到媒体上传 * * @param $ form_fields数组,包含在附件中的字段 * @param $ post对象,数据库中的附件记录 * @return $ form_fields,修改表单域 * / 函数be_attachment_field_credit($ form_fields,$ post){ $ form_fields ['be-photographer-name'] = array( 'label'=>'摄影师姓名', 'input'=>'text', 'value'=> get_post_meta($ post-> ID,'be_photographer_name',true), '帮助'=>'如果提供,照片信用将被显示', ); $ form_fields ['be-photographer-url'] = array( 'label'=>'摄影师网址', 'input'=>'text', 'value'=> get_post_meta($ post-> ID,'be_photographer_url',true), 'helps'=>'添加摄影师网址', ); 返回$ form_fields; } add_filter('attachment_fields_to_edit','be_attachment_field_credit',10,2); / ** *在媒体上传器中保存摄影师姓名和网址的值 * * @param $ post数组,数据库的发布数据 * @param $ attachment数组,$ _POST形式的附件字段 * @return $ post数组,修改后的数据 * / 函数be_attachment_field_credit_save($ post,$ attachment){ if(isset($ attachment ['be-photographer-name'])) update_post_meta($ post ['ID'],'be_photographer_name',$ attachment ['be-photographer-name']); if(isset($ attachment ['be-photographer-url'])) update_post_meta($ post ['ID'],'be_photographer_url',esc_url($ attachment ['be-photographer-url'])); 返回$ post; } add_filter('attachment_fields_to_save','be_attachment_field_credit_save',10,2); ?>
上面的代码将两个文本字段添加到媒体上传器称为摄影师名称和摄影师URL。 你可以在下面的截图中看到:
代码解释: 在第一个函数中,我们只是使用数组来指定字段的标签,输入类型,值和帮助文本。 第二个功能是检查是否为这些字段设置了一个值。 如果设置了该值,则更新后期元数据。
如果您想在附件模板中显示字段,只需将以下代码粘贴到循环中即可:
echo get_post_meta($ post-> ID,'be_photographer_url',true);
如果要在档案模板或任何其他模板中显示特色图片的字段,只需使用:
echo get_post_meta(get_post_thumbnail_id(),'be_photographer_url',true);
我们希望你喜欢这篇文章。 对于那些不知道如何创建附件模板的人,别担心。 在下一篇文章中,我们将介绍如何在WordPress中创建附件的模板。
给比尔·埃里克森的帽子提示向我们展示了如何做到这一点。