Как вставить и отобразить поле владельца авторских прав на изображениях, изображениях и галереях в статьях? - PullRequest
0 голосов
/ 10 февраля 2020

Моя просьба предоставить отдельное поле авторских прав для изображений и отобразить информацию об авторских правах для каждого изображения. Для этого я вставил отдельное поле в библиотеку мультимедиа на основе этого источника (https://bavotasan.com/2012/add-a-copyright-field-to-the-media-uploader-in-wordpress/)

/**
 * Adding a "Copyright" field to the media uploader $form_fields array
 *
 * @param array $form_fields
 * @param object $post
 *
 * @return array
 */
function add_copyright_field_to_media_uploader( $form_fields, $post ) {
    $form_fields['copyright_field'] = array(
        'label' => __('Copyright'),
        'value' => get_post_meta( $post->ID, '_custom_copyright', true ),
        'helps' => 'Set a copyright credit for the attachment'
    );

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

/**
 * Save our new "Copyright" field
 *
 * @param object $post
 * @param object $attachment
 *
 * @return array
 */
function add_copyright_field_to_media_uploader_save( $post, $attachment ) {
    if ( ! empty( $attachment['copyright_field'] ) ) 
        update_post_meta( $post['ID'], '_custom_copyright', $attachment['copyright_field'] );
    else
        delete_post_meta( $post['ID'], '_custom_copyright' );

    return $post;
}
add_filter( 'attachment_fields_to_save', 'add_copyright_field_to_media_uploader_save', null, 2 );

/**
 * Display our new "Copyright" field
 *
 * @param int $attachment_id
 *
 * @return array
 */
function get_featured_image_copyright( $attachment_id = null ) {
    $attachment_id = ( empty( $attachment_id ) ) ? get_post_thumbnail_id() : (int) $attachment_id;

    if ( $attachment_id )
        return get_post_meta( $attachment_id, '_custom_copyright', true );

}

Теперь, с помощью приведенного выше кода, вы можете использовать следующее фрагмент для отображения нового поля «Авторское право» вложения в одном из шаблонов вашей страницы.

<?php echo get_featured_image_copyright(); ?>

К сожалению, этот фрагмент доступен только для избранных изображений. Как я могу использовать этот фрагмент для изображений и галерей в статьях? Будет ли это работать с кодовой базой? Если нет, то как бы вы решили эту проблему без плагинов? Буду очень признателен за вашу помощь.

1 Ответ

0 голосов
/ 10 февраля 2020

Похоже, у вас есть параметр в функции get_featured_image_copyright($attachment_id);.

Таким образом, вы можете вызвать функцию с идентификатором изображения:

get_featured_image_copyright($image_id);.

Пример с галереей:

while ( have_posts() ) : the_post();
     if ( get_post_gallery() ) :
            $gallery = get_post_gallery( get_the_ID(), false );

            /* Loop through all the image and output copyright one by one */
            foreach( $gallery['ids'] as $id ) : 
              echo get_featured_image_copyright($id);
            endforeach;
     endif;
endwhile;

Не проверял, но вы поняли идею, и я уверен, что я не сделал опечатку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...