最初に this のようないくつかのトピックを見ましたが、それらは私を助けませんでした。
これらの添付画像を表示するために、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
も試しました
メディアライブラリを list モードで表示した場合
/wp-admin/upload.php?mode=list
そうすると、添付ファイルごとに Attach / Detach リンクが表示されます。
各添付ファイルは、post_parent
テーブルのwp_posst
フィールドを介して単一の親にのみ添付できます。
投稿エディタから画像を削除しても、post_parent
フィールドは0に変更されません。
投稿を編集するときに、 Media View popup内でできるようにすると、メディアライブラリ内で検索するのに長い時間がかかる可能性があるため、便利です。
最初にカスタムBackboneマイクロテンプレートを作成し、それを 添付ファイルの詳細 ビューに追加します。
<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 }}
は現在の添付ファイルのIDです。
これは、 Delete Attachment リンクの後に挿入する方法です。
$( 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によると、このデモプラグインを作成するのに非常に役立ちました。
次のステップは、 Detach リンクを追加して、さらに簡単にすることです。