Как мне удалить изображения из сообщений?


Во-первых, я видел некоторые темы, такие как это, но они мне не помогли.


Я прикрепил несколько изображений к сообщению через "Добавить медиа". :

enter image description here

И для показа этих прикрепленных изображений я использовал следующий код в файле single.php:

if ( have_posts() ) : while ( have_posts() ) : the_post();           
    $args = array(
        'post_type'   => 'attachment',
        'numberposts' => -1,
        'post_status' => null,
        'post_parent' => $post->ID
    );      
    $attachments = get_posts( $args );
    if ( $attachments ) {
        foreach ( $attachments as $attachment ) {
            echo '<li>';
            echo wp_get_attachment_image( $attachment->ID, 'full' );
            echo '<p>';
            echo apply_filters( 'the_title', $attachment->post_title );
            echo '</p></li>';
        }
    }       
endwhile; endif;

Это показывает прикрепленные изображения и отлично работает.

Проблема в том, :

Когда я удаляю прикрепленное изображение из сообщения:

enter image description here

Удаленные изображение все еще существует в этом посте!

Как я могу полностью удалить изображения из сообщений?

P.S. Я тоже пытался Ctrl + F5

Author: Community, 2015-10-21

1 answers

Если вы просматриваете библиотеку мультимедиа в режиме список:

/wp-admin/upload.php?mode=list

Затем вы увидите Прикрепление/ Отсоедините ссылки для каждого вложения.

Каждое вложение может быть прикреплено только к одному родителю через поле post_parent в таблице wp_posst.

Удаление изображения из редактора сообщений не приведет к изменению поля post_parent на 0.

Делаем жизнь немного проще!

Было бы неплохо иметь возможность сделать это в рамках Просмотр мультимедиа всплывающее окно при редактировании записи, так как поиск ее в медиатеке может занять много времени.

Custom link

Сначала мы создадим пользовательский микрошаблон магистрали, который мы добавим в Сведения о вложении представление:

<script type="text/html" id="tmpl-wpse-open-in-library">
    <div class="wpse-open-in-library">
        <a href="<?php echo admin_url('upload.php?mode=list&p=');?>{{ data.id }}" target="_blank">
             <?php _e( 'Open in Media Library' ); ?>
        </a>
    </div>
</script>

Где {{ data.id }} - идентификатор текущего вложения.

Вот как мы вставляем его после ссылки Удалить вложение :

$( wp.media.template('wpse-open-in-library')(
      { 
         id: attachment.get( 'id' )  // <-- This is how we can fetch the current ID 
      }
    ) 
 ).insertAfter('.delete-attachment');

Где мы передаем переменную id в наш пользовательский микро шаблон.

Обратите внимание, что мы можем просмотреть все прикрепленные файлы, выбрав следующую опцию:

attached files

Демонстрационный плагин

Вот весь демонстрационный плагин:

/**
 * Open an attachment in the Media Library, to be able to attach/detach it
 *
 * @link https://wordpress.stackexchange.com/a/206179/26350
 */
add_action( 'print_media_templates', function()
{ ?>

  <!-- Custom template part -->
  <script type="text/html" id="tmpl-wpse-open-in-library">
        <div class="wpse-open-in-library">
            <a href="<?php echo admin_url('upload.php?mode=list&p=');?>{{ data.id }}" target="_blank">
                <?php _e( 'Open in Media Library' ); ?>
           </a>
       </div>
  </script>

  <!-- Extend the Attachment Details View -->
  <script>
      jQuery(document).ready( function( $ ) 
      {
          wp.media.view.Settings.AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay.extend(
          {
              render: function() 
              {
                  wp.media.View.prototype.render.apply( this, arguments );
                  var attachment = this.options.attachment;
                  $( wp.media.template('wpse-open-in-library')(
                        { 
                            id: attachment.get( 'id' ) 
                        }
                     ) 
                  ).insertAfter('.delete-attachment');

                return this;
            }
      } );
    } );
  </script>
<?php
} );

Этот ответ от @kalimah-apps и ответы здесь от @bonger и @Fabien Quatravaux оказали большую помощь в создании этого демонстрационного плагина.

Тогда следующим шагом было бы добавить ссылку Отсоединить , чтобы сделать ее еще проще;-)

 13
Author: birgire, 2017-04-13 12:37:39