如何将图片从帖子中分离出来?

时间:2015-10-21 作者:Hamed Kamrava

首先我看到了一些话题,比如this, 但他们没有帮助我


我通过“添加媒体”将一些图像附加到帖子中:

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;
这显示了附加的图像,效果很好。

The Problem :

从帖子中删除附加图像时:

enter image description here

删除的图像仍然存在于该帖子中!

如何将图像与帖子完全分离?

P、 我也试过了Ctrl + F5

1 个回复
最合适的回答,由SO网友:birgire 整理而成

如果在列表模式下查看媒体库:

/wp-admin/upload.php?mode=list
然后,您将看到每个附件的附加链接。

每个附件只能通过post_parent 中的字段wp_posst 桌子

从post editor中删除图像不会更改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 }} 是当前附件的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
} );
This answer 由@kalimah apps和answers here 由@bonger和@Fabien Quatravaux编写,对构建此演示插件非常有帮助。

然后,下一步是添加“分离”链接,使其更容易;-)

相关推荐

Even/Odd every two posts

我需要每两篇文章显示一个不同的布局,是否可以使用偶数/奇数来实现这一点?<?php while (have_posts()): the_post() ?> <?php if ($wp_query->current_post % 2 == 0): ?> even <?php else: ?> odd <?php endif ?> <?php endwhile