Wie können Sie feststellen, ob ein Bild nur angehängt ist oder tatsächlich in einen Beitrag eingefügt wurde?

Trage mit mir. Ich verspreche, es gibt eine Frage, wenn ich fertig bin 🙂

In WordPress können Sie während der Bearbeitung eines Beitrags Bilder hochladen und haben die Möglichkeit, sie in den Inhalt einzufügen (oder nicht).

Unabhängig davon scheint das Bild beim Anzeigen des Medienmanagers an den Post angehängt zu sein.

Platziert WordPress Referenzen in die database, um ein angehängtes und in den Post-Inhalt eingefügtes Bild zu unterscheiden? Oder umgekehrt, ein Bild, das an einen Beitrag angehängt wurde, aber NICHT in den Post-Inhalt eingefügt wurde?

Warum will ich das wissen?

Ich möchte dem Nutzer erlauben, Bilder hochzuladen, die über dem Post-Inhalt (eine Reihe von Bildern) geschrieben werden, indem man sie einfach über den Post-Attachment-Wizard hochlädt.

Sie können jedoch auch einige Bilder hochladen, die nur im Inhalt angezeigt werden sollen. In diesem Fall klicken sie auf “In Post einfügen”. Wenn ich keine Möglichkeit habe, Bilder, die tatsächlich eingefügt wurden, von Bildern zu unterscheiden, die nur angefügt wurden, erhalten sie doppelte Bilder, eines im Post und eines oben im Post.

Irgendwelche Gedanken darüber, wie man das macht?

Ich nehme an, ein alternativer Ansatz bestünde darin, dem Attachmenteditor ein Kontrollkästchen hinzuzufügen, um ein Bild zur Anzeige als Postheader-Anhang zu kennzeichnen, und dann nach Bildern zu suchen, die an den Post mit dem speziellen Flag angehängt sind.

Solutions Collecting From Web of "Wie können Sie feststellen, ob ein Bild nur angehängt ist oder tatsächlich in einen Beitrag eingefügt wurde?"

Ich habe nextgen gallery plugin benutzt um sowas zu machen. Tatsächlich habe ich nur die Hälfte davon genutzt: Der Endbenutzer lädt Bilder über die Plugin-Oberfläche hoch, aber die eigentliche Anzeige in der Post erfolgt mit einem benutzerdefinierten Shortcode.

Ich glaube nicht, dass es einen Weg gibt zu sagen, ob ein Anhang in den Beitrag eingefügt wurde, kurz bevor man die Post-Inhaltsquelle untersucht.

** Aktualisiertes Snippet: hatte die globale $ post-ID und nicht die übergebene ID verwendet, so dass einige Aktualisierungen erforderlich waren, bevor das Metatag den Inhaltsbildern hinzugefügt wurde. Jetzt funktioniert es.

Ich brauchte eine ähnliche Lösung und folgte Jan Fabry’s Vorschlägen. Ich kam zu einer function (zugegebenermaßen unelegant, aber es funktioniert):

/* Add meta value to distinguish inserted images from other attached images - lionassociates.com */ function insertedImage_save_meta($post_id) { $upPost = get_post($post_id); $rawPostDoc = new DOMDocument(); @$rawPostDoc->loadHTML($upPost->post_content); $imgs = $rawPostDoc->getElementsByTagName('img'); $i = 0; foreach($imgs as $img){ $imgIDStr = substr($img->getAttribute('class'), (stripos($img->getAttribute('class'),'wp-image-')+9), 6); $imgID = preg_replace("[^0-9]", '', $imgIDStr); if($imgID != '') { if(get_post_meta($imgID, '_inserted-image', false)) update_post_meta($imgID, '_inserted-image', 'yes'); else add_post_meta($imgID, '_inserted-image', 'yes'); } $i++; } } /* Do something with the data entered */ add_action('save_post', 'insertedImage_save_meta'); 

Also wird das eingefügt (functions.php). Dann benutze ich den Anhang Metawert in einer Schleife, wo immer ich meine Bilder ausspucke (nach Jan Fabry):

  $imgs = get_posts(array('post_parent'=>get_the_id(), 'numberposts'=>-1, 'post_type'=>'attachment', 'post_mime_type'=>'image')); if($imgs[0]) { foreach($imgs as $img) { if(!get_post_meta($img->ID, '_inserted-image', true)) echo wp_get_attachment_image($img->ID, 'sec-slide'); //'sec-slide' is just the name of a custom image size } } 

Spuckt alle angehängten Bilder aus, die nicht in den Post-Inhalt eingefügt wurden.

Wie Kemp sagte, gibt es keinen Unterschied in der database zwischen einem Bild, das angefügt wurde, und einem, das tatsächlich in den Inhalt eingefügt wird. Ich würde den Inhalt scannen (beim Post-Speichern, nicht jedes Mal, wenn Sie ihn anzeigen) und ein zusätzliches Metadaten-Attribut für angehängte aber nicht angezeigte Bilder festlegen. Denken Sie daran, auch nach Galerien zu suchen: Sie werden mit einem Shortcode eingefügt, es ist also nicht immer nur eine Suche nach -Tags.