it-swarm.com.de

Hinzufügen einer Bildergalerie zu einem benutzerdefinierten Beitragstyp?

Ich ziehe Daten von einem externen Webdienst in einen benutzerdefinierten Beitragstyp. Diese Daten enthalten Bilder. Wie kann ich eine Bildergalerie erstellen, vorhandene Anhänge hinzufügen und sie mit einem Beitrag verknüpfen?

Ich hatte gehofft, so etwas wie ein set_post_gallery-Gegenstück zur get_post_gallery-Funktion zu finden, aber ich kann so etwas nicht im Codex, auf Google oder in wp-includes/media.php finden.

So richte ich die Anhänge ein:

$attachment = [
  'guid' => wp_upload_dir()[ 'url' ] . '/' . basename( $path ),
  'post_mime_type' => wp_check_filetype( basename( $path ), null )[ 'type' ],
  'post_title' => "$mlsNum $id",
  'post_content' => '',
  'post_status' => 'inherit'
];

$attachmentId = wp_insert_attachment( $attachment, $path, $this->postId );

// Generate attachment metadata and create resized images.
wp_update_attachment_metadata( $attachmentId, wp_generate_attachment_metadata( $attachmentId, $path ));

Und so versuche ich, die Galerie für das Thema abzurufen:

$gallery = get_post_gallery( $post, false );
var_dump( $gallery );
var_dump( $post );

$post ist definiert und $gallery ist falsch. Ich hatte den Eindruck, dass wp_insert_attachment eine Galerie für den Beitrag erstellen und den Anhang hinzufügen würde, aber anscheinend ist dies nicht der Fall. Wenn ja, würde das für mich andere Probleme bereiten, wenn ich dem Beitrag ein PDF anhänge.

1
Dan Ross

Wenn Sie nur RAW-Bilddateien haben, die Sie einem Beitrag zuweisen möchten, übernimmt wp_insert_attachment die Aufgabe.

Mit Anhängen, die bereits in Ihrer Datenbank vorhanden sind, können Sie wp_update_post verwenden, um das post_parent des Anhangs festzulegen. So was:

wp_update_post( array(
    'ID' => $attachment_id,
    'post_parent' => $parent_post_id,
));

Um die Anhänge eines Beitrags zu erhalten, können Sie get_children verwenden.

$args = array(
    'post_parent' => $parent_post_id,
    'post_type' => 'attachment',
);
$attachments = get_children( $args );

Wenn Sie darauf bestehen, get_post_gallery zu verwenden, werden nur Bildanhänge zurückgegeben. Fügen Sie den [gallery]-Shortcode zum Inhalt Ihres übergeordneten Beitrags hinzu.

2
Jörn Lund

Es gibt eine großartige PHP Lösung, die den Galerie-Editor zum benutzerdefinierten Beitragstyp-Editor hinzufügt - großartig, wenn Sie wie ich benutzerdefinierte Beitragstypen mit PHP erstellen und Daten mit WPAllImport importieren . In diesem Fall möchte ich sicherstellen, dass ich die Standardgalerie verwende, damit meine Kunden importierte Bilder bearbeiten, hinzufügen oder löschen können.

Mit dem folgenden Code wird der Galerie-Editor zu Ihrer benutzerdefinierten Benutzeroberfläche für den Beitragstyp-Editor hinzugefügt:

https://Gist.github.com/alexdunae/897503

1
Dave Hilditch