it-swarm.com.de

Wie löse ich Bilder von Beiträgen?

Erstens habe ich einige Themen wie das gesehen, aber sie haben mir nicht geholfen.


 enter image description here 

Zum Anzeigen dieser angehängten Bilder habe ich folgenden Code in der single.php-Datei verwendet:

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;

Dies zeigt die angehängten Bilder und funktioniert gut.

Das Problem:

Wenn ich ein angefügtes Bild aus einem Beitrag entferne:

 enter image description here 

Das entfernte Bild existiert noch in diesem Beitrag!

Wie kann ich Bilder vollständig von Beiträgen trennen?

P.S. Ich habe auch versucht, Ctrl + F5

4
Hamed Kamrava

Wenn Sie die Medienbibliothek im Modus Liste anzeigen:

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

dann sehen Sie die Attach / Detach Links für jeden Anhang.

Jeder Anhang kann nur über das Feld post_parent in der Tabelle wp_posst an ein einzelnes übergeordnetes Element angehängt werden.

Wenn Sie ein Bild aus dem Post-Editor löschen, wird das Feld post_parent nicht in 0 geändert.

Das Leben ein bisschen leichter machen!

Es wäre schön, wenn Sie einen Beitrag in der Medienansicht bearbeiten könnten, da es sehr lange dauern kann, ihn in der Medienbibliothek zu finden.

 Custom link 

Zuerst erstellen wir eine benutzerdefinierte Backbone-Mikrovorlage, die wir zu den Anhangsdetails -Ansichten hinzufügen:

<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>

dabei ist {{ data.id }} die ID des aktuellen Anhangs.

So fügen wir es nach dem Anhang löschen Link ein:

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

hier übergeben wir die Variable id an unsere benutzerdefinierte Mikrovorlage.

Beachten Sie, dass wir alle angehängten Dateien anzeigen können, indem Sie die folgende Option auswählen:

 attached files 

Demo-Plugin

Hier ist das gesamte Demo-Plugin:

/**
 * 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
} );

Diese Antwort von @ kalimah-apps und die Antworten hier von @bonger und @Fabien Quatravaux, waren eine große Hilfe beim Aufbau dieses Demo-Plugins.

Dann wäre der nächste Schritt, den Detach Link hinzuzufügen, um es noch einfacher zu machen ;-)

12
birgire