向附件添加字段-仅在插入新附件时显示

时间:2016-07-26 作者:Daniel Setréus

我想为帖子的图像附件(插入帖子内容的图像)添加两个自定义文本字段。其次,我还想远程显示一些默认字段,如标题和描述。

我成功地添加了如下字段:

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, 使其无法删除任何默认字段。

我非常感谢你在这件事上的任何帮助。

1 个回复
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\']); 在编辑过滤器中,应分别删除标题和描述字段,但不确定所需部分。

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: