如何将自定义域添加到媒体屏幕(图像/图库)?

时间:2018-03-18 作者:Runnick

我正在尝试向图像和库编辑屏幕添加自定义字段。

我知道这里也有类似的问题,尽管答案要么不适用于当前版本,要么只在upload 屏幕,而我需要一个字段在所有edit 屏幕(见下文)。

为此,我认为,你必须搞乱你的脊梁骨。js作为attachment_fields_to_edit 仅添加到上载屏幕。

将带有attachment\\u fields\\u的字段添加到\\u edit

↑ 这是上传图像尖叫。在这里Style 添加了attachment_fields_to_edit 过滤器,my\\u字段添加了ACF插件。

但他们在帖子的编辑屏幕中丢失了

enter image description here

↑ 单击实际帖子上的编辑

enter image description here

↑ 无样式(&A);my\\u字段!

问题是如何添加字段以使其仍在编辑屏幕上?理想的答案将包括添加字段到画廊编辑屏幕,如果这是一个类似的过程

这个问题对我来说很重要所以I’ll be adding a 100 rep 有赏金的时候就给。

谢谢

4 个回复
SO网友:Outsource WordPress

这是工作代码(对我来说很好),你试过了吗?只需添加到主题的功能。php”,并根据需要更改自定义字段名称。

//function to add custom media field
function custom_media_add_media_custom_field( $form_fields, $post ) {
    $field_value = get_post_meta( $post->ID, \'custom_media_style\', true );

    $form_fields[\'custom_media_style\'] = array(
        \'value\' => $field_value ? $field_value : \'\',
        \'label\' => __( \'Style\' ),
        \'helps\' => __( \'Enter your style\' ),
        \'input\'  => \'textarea\'
    );

    return $form_fields;
}
add_filter( \'attachment_fields_to_edit\', \'custom_media_add_media_custom_field\', null, 2 );

//save your custom media field
function custom_media_save_attachment( $attachment_id ) {
    if ( isset( $_REQUEST[\'attachments\'][ $attachment_id ][\'custom_media_style\'] ) ) {
        $custom_media_style = $_REQUEST[\'attachments\'][ $attachment_id ][\'custom_media_style\'];
        update_post_meta( $attachment_id, \'custom_media_style\', $custom_media_style );

    }
}
add_action( \'edit_attachment\', \'custom_media_save_attachment\' );

SO网友:Mr Rethman

在我个人对该功能的实现中(没有ACF),这就是我如何使用attachment_fields_to_editattachment_fields_to_save. 看法GIST

用法:

add_action( \'after_setup_theme\', \'thumbnail_meta\' );

function thumbnail_meta(){
  Thumbnail_Meta::create( [
            \'html_thumbnail_meta_id\'          => [
              \'label\' => __( \'<strong>Featured Settings:</strong>\' ),
              \'input\' => \'html\'
            ],
            \'checkbox_thumbnail_meta_id\'        => [
              \'label\' => __( \'Checkbox?\' ),
              \'input\' => \'checkbox\'
            ],
            \'url_thumbnail_meta_id\'      => [
              \'label\' => __( \'Link:\' ),
              \'type\'  => \'url\',
            ],
            \'select_thumbnail_meta_id\' => [
              \'label\'   => __( \'Display\' ),
              \'input\'   => \'select\',
              \'options\' => [
                \'none\'   => \'-- None --\',
                \'top\'    => \'Content Top\',
                \'right\'  => \'Content Right\',
                \'left\'   => \'Content Left\',
                \'bottom\' => \'Content bottom\'
              ]
            ]
          ] );
  }
但是,如果没有看到您的代码,就无法确定问题是什么。

SO网友:Saran

下面是在媒体编辑屏幕中添加摄影师姓名和url的示例代码。

function be_attachment_field_credit( $form_fields, $post ) {
    $form_fields[\'be-photographer-name\'] = array(
        \'label\' => \'Photographer Name\',
        \'input\' => \'text\',
        \'value\' => get_post_meta( $post->ID, \'be_photographer_name\', true ),
        \'helps\' => \'If provided, photo credit will be displayed\',
    );

    $form_fields[\'be-photographer-url\'] = array(
        \'label\' => \'Photographer URL\',
        \'input\' => \'text\',
        \'value\' => get_post_meta( $post->ID, \'be_photographer_url\', true ),
        \'helps\' => \'If provided, photographer name will link here\',
    );

    return $form_fields;
}

add_filter( \'attachment_fields_to_edit\', \'be_attachment_field_credit\', 10, 2 );

/**
 * Save values of Photographer Name and URL in media uploader
 *
 * @param $post array, the post data for database
 * @param $attachment array, attachment fields from $_POST form
 * @return $post array, modified post data
 */

function 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\', $attachment[\'be-photographer-url\'] );

    return $post;
}

add_filter( \'attachment_fields_to_save\', \'be_attachment_field_credit_save\', 10, 2 );

SO网友:PapaSoft

您尝试使用的弹出窗口是用js模板呈现的wp-includes/media-template.php. 搜索tmpl-image-details.

是的,我们所能做的就是在我们的主题或插件中覆盖这个模板。这可能是您正在寻找的方式:

https://wordpress.stackexchange.com/a/268157/97253

现在我正在保存字段数据并在前端显示它。希望我完成后能编辑这篇文章。

结束