Wie erhält man alle Inline-Bilder in Post-Content?

Ich möchte alle Inline-Bilder im Post-Inhalt erhalten.

Die Methode get_children() funktioniert nicht für mich, da sie dasselbe Foto zweimal hinzufügen könnten. Außerdem erhält dies nur “angehängte” Bilder, und sie könnten möglicherweise ein Bild über den Tab HTML-Editor hinzufügen, der es nicht an den Post anfügt.

Ich möchte ein Array aller Inline-Bilder in der Reihenfolge erhalten, in der sie im Post erscheinen.

Ist das möglich?

Solutions Collecting From Web of "Wie erhält man alle Inline-Bilder in Post-Content?"

Nun, du kannst das 1 von 2 Möglichkeiten machen.

 $attachments = get_posts(array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => get_the_ID(), 'order' => 'ASC', 'orderby' => 'id', )); 

Und dann manipuliere das Array, um Duplikate zu entfernen.

Eine andere Option wäre, einen Inhaltsfilter anzuwenden und eine Regex zu verwenden, um alle IMG-Tags innerhalb des Inhalts zu finden und zu erfassen.

Soweit ich weiß, fügt wp, wenn Sie ein Bild im visuellen Editor hinzufügen, es als Post-Anhang hinzu, so dass Sie nicht mit der ersten Methode mit Duplikaten enden sollten. Wenn Sie sie in der Reihenfolge, in der sie angezeigt werden, erfassen, werden Anhänge sequenziell hinzugefügt. Wenn Sie also die Liste nach ID auswählen, erhalten Sie die Liste in der Reihenfolge, in der sie dem Post hinzugefügt wurden, jedoch nicht unbedingt in der Reihenfolge, in der sie im Markup erscheinen. Dafür müssten Sie definitiv mit der zweiten Methode der Verwendung eines Inhaltsfilters gehen.

Ich persönlich mag die Idee, einen Inhaltsfilter dafür zu verwenden, nicht persönlich, weil es schwierig sein könnte, eine richtige Regex zu schreiben, um die Imgs zu greifen, abhängig davon, welche Markup hinzugefügt wurde.

Für eine Regex, etwa so:

 preg_match('#()#', $content, $results); 

könnte funktionieren. Dadurch werden die Ergebnisse als Array, mit dem Sie arbeiten können, in die Variable $ results gespeichert.