get_attached_media () gibt ein leeres Array zurück, wenn die Mediendatei bereits von einem anderen Post verwendet wurde

Ich möchte die verschiedenen PDF- und ZIP-Dateien abrufen, die an einen einzelnen Beitrag angehängt sind, und sie in einem bestimmten Abschnitt außerhalb des Inhalts mithilfe der WP-function get_attached_media() . Während mein Code funktioniert wie es für neu hochgeladene Mediendateien sollte, kann ich es nicht funktionieren, wenn eine Datei bereits hochgeladen und in einem anderen Beitrag verwendet wurde.

Angenommen, Post ID-1 bettet Datei 1.pdf in den Inhalt ein. Wenn ich dann post ID-2 erstelle und erneut file-1.pdf in den Inhalt get_attached_media( 'application/pdf', $post->ID ) , gibt get_attached_media( 'application/pdf', $post->ID ) ein leeres Array zurück!

Fehle ich etwas / sollte ich etwas wegspülen (wenn ja, wie …)?

Hier ist der Code meiner Schleife:

loop-single.php

  <div id="post-" > ID), 'item-featured' )['0']; } else { $thumb = false; } $content = preg_replace('/\[gallery.*\]/', '', wpautop( get_the_content() ) ); $the_content_EN = get_extended(get_post_meta(get_the_ID(),'mysecondeditor')['0'])['main']; $the_content;$date_publication; $the_content = apply_filters('the_content', $content ); // Media files ? $pdf = get_attached_media( 'application/pdf', $post->ID ); $zip = get_attached_media( 'application/zip', $post->ID ); $attachments = ($pdf || $zip) ? true : false; // DEBUG info print_r($pdf); print_r($zip); ?> 

<img src="https://wordpress.stackexchange.com/questions/191544/get-attached-media-returns-empty-array-if-media-file-already-used-by-another-p/" alt />

Downloads:

  • <a href="https://wordpress.stackexchange.com/questions/191544/get-attached-media-returns-empty-array-if-media-file-already-used-by-another-p/ID) ); ?>" target="_blank" class="pdf"> ID) ); ?>
  • <a href="https://wordpress.stackexchange.com/questions/191544/get-attached-media-returns-empty-array-if-media-file-already-used-by-another-p/ID) ); ?>" target="_blank" class="zip"> ID) ); ?>

<?php edit_post_link( __( 'Edit', 'ywp' ), '', '' ); ?>

Solutions Collecting From Web of "get_attached_media () gibt ein leeres Array zurück, wenn die Mediendatei bereits von einem anderen Post verwendet wurde"

Ich bin auf dieses Problem gestoßen und habe am Ende eine grundlegende function erstellt, um die “angehängten” Medien per URL aus dem Hauptteil des Posts zu extrahieren (in meinem Fall ein Post vom Typ Dokument, aber es sollte mit jeder Art von Post funktionieren):

 function get_first_link_url($post_id) { $content = get_post_field('post_content', $post_id); if ($content == null) { return null; } $dom = new DOMDocument(); $dom->loadHTML($content); $links = $dom->getElementsByTagName("a"); if (count($links) == 0) { return null; } $url = $links[0]->getAttribute('href'); return $url; } 

Dies gibt nur die URL (href) des ersten Tags in dem Post zurück, aber es könnte leicht modifiziert werden, um alle von ihnen als ein Array zurückzugeben.