Как добавить настраиваемое поле на экран мультимедиа (изображение /галерея)?

Я пытаюсь добавить настраиваемое поле в изображение и экран редактирования галереи.

Я знаю, что здесь есть похожие вопросы, хотя ответы либо не работают с текущей версией, либо добавляют поле только к экрану upload , в то время как мне нужно, чтобы поле было видимым во всех edit (см. ниже).

Для этого, я полагаю, вам придется возиться с backbone.js как attachment_fields_to_edit только добавляет экран загрузки.

Добавление поля с attachment_fields_to_edit

↑ Это изображение загружается. Здесь Стиль добавлен с фильтром attachment_fields_to_edit, а my_field добавляется с плагином ACF.

Но они отсутствуют на экране редактирования в сообщении

 введите описание изображения здесь>> </a> </p>

<p> ↑ Нажмите править на фактическое сообщение </p>

<p> <a href= введите описание изображения здесь>> </a> </p>

<p> ↑ Нет стиля и amp; поля my_field! </p>

<h2> Вопрос </h2>

<p> Как добавить поля, чтобы их все еще есть на экране редактирования? В идеале ответ будет включать добавление полей в экран редактирования галереи, если это аналогичный процесс </p>

<p> Этот вопрос для меня очень важен, поэтому <strong> я добавлю 100% репутации </strong>, когда он будет доступен. </p>

<p> Спасибо! </p></body></html>

7 голосов | спросил Runnick 18 MarpmSun, 18 Mar 2018 14:34:55 +03002018-03-18T14:34:55+03:0002 2018, 14:34:55

3 ответа


1

Вот рабочий код (отлично работает для меня), вы пробовали это? Просто добавьте в тему 'functions.php' и измените имена настраиваемых полей по мере необходимости.

//функция добавления пользовательского поля мультимедиа
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'] = массив (
        'value' => $ field_value? $ field_value: '',
        'label' => __( 'Стиль' ),
        'help' => __ ('Введите свой стиль'),
        'input' => «Текстовое поле»
    );

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

//сохранение пользовательского поля мультимедиа
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');
ответил Outsource WordPress 3 J000000Tuesday18 2018, 16:45:14
0

В моих личных реализациях этой функциональности (без ACF), именно так я смог достичь этого, используя комбинацию attachment_fields_to_edit и attachment_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'
              ]
            ]
          ] );
  }

Однако - не могу точно сказать, в чем проблема, не видя ваш код.

ответил Lawless 1 PMpSun, 01 Apr 2018 16:54:18 +030054Sunday 2018, 16:54:18
0

Вот пример кода для добавления имени и 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 );
ответил Saran 5 J000000Thursday18 2018, 15:16:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132