我想为帖子的图像附件(插入帖子内容的图像)添加两个自定义文本字段。其次,我还想远程显示一些默认字段,如标题和描述。
我成功地添加了如下字段:
add_filter(\'attachment_fields_to_edit\', array($this, \'applyFilter\'), 1, 2);
public function applyFilter( $form_fields, $post = null ) {
$form_fields[\'someCustom\'] = array(
\'label\' => \'Image credit\',
\'input\' => \'text\',
\'helps\' => \'Photographer / bureau\',
\'application\' => \'image\',
\'exclusions\' => array( \'audio\', \'video\' ),
\'required\' => true,
\'error_text\' => \'Credit field required\',
);
return $form_fields;
}
这会在媒体库模式中添加字段,但
only when inserting new images - not when editing existing images. 还有
required
即使字段为空,参数似乎也无法阻止插入图像。
无论我如何设置过滤器的优先级(尝试了从null到1到100的所有操作),它似乎都是在默认字段添加到之前运行的form_fields
, 使其无法删除任何默认字段。
我非常感谢你在这件事上的任何帮助。
SO网友:majick
好的,我想我找到了,你需要在attachment_fields_to_save
保存新字段(例如作为附件的post meta)
add_filter( \'attachment_fields_to_save\', \'save_some_custom_field\', 10, 2 );
function save_some_custom_field($post, $attachment) {
$attachid = $post[\'ID\']; // yes this is actually an array here
update_post_meta($attachid,\'someCustom\',$attachment[\'someCustom\']);
}
然后您将添加到
$form_fields
编辑过滤器数组,类似于:
\'value\' => get_post_meta($post->ID,\'someCustom\',true),
。。。记住移除
= null
从函数参数。
unset($form_fields[\'post_excerpt\']);
和unset($form_fields[\'post_content\']);
在编辑过滤器中,应分别删除标题和描述字段,但不确定所需部分。