Как мне удалить изображения из сообщений?
Во-первых, я видел некоторые темы, такие как это, но они мне не помогли.
Я прикрепил несколько изображений к сообщению через "Добавить медиа". :
И для показа этих прикрепленных изображений я использовал следующий код в файле 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;
Это показывает прикрепленные изображения и отлично работает.
Проблема в том, :
Когда я удаляю прикрепленное изображение из сообщения:
Удаленные изображение все еще существует в этом посте!
Как я могу полностью удалить изображения из сообщений?
P.S. Я тоже пытался Ctrl + F5
1 answers
Если вы просматриваете библиотеку мультимедиа в режиме список:
/wp-admin/upload.php?mode=list
Затем вы увидите Прикрепление/ Отсоедините ссылки для каждого вложения.
Каждое вложение может быть прикреплено только к одному родителю через поле post_parent
в таблице wp_posst
.
Удаление изображения из редактора сообщений не приведет к изменению поля post_parent
на 0.
Делаем жизнь немного проще!
Было бы неплохо иметь возможность сделать это в рамках Просмотр мультимедиа всплывающее окно при редактировании записи, так как поиск ее в медиатеке может занять много времени.
Сначала мы создадим пользовательский микрошаблон магистрали, который мы добавим в Сведения о вложении представление:
<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
в наш пользовательский микро шаблон.
Обратите внимание, что мы можем просмотреть все прикрепленные файлы, выбрав следующую опцию:
Демонстрационный плагин
Вот весь демонстрационный плагин:
/**
* 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 оказали большую помощь в создании этого демонстрационного плагина.
Тогда следующим шагом было бы добавить ссылку Отсоединить , чтобы сделать ее еще проще;-)