Je suis en train d'extraire des données d'un service Web externe dans un type de publication personnalisé. Ces données incluent des images. Comment créer une galerie d'images, y ajouter des pièces jointes existantes et l'associer à une publication?
J'espérais trouver quelque chose comme un équivalent set_post_gallery
de la fonction get_post_gallery
, mais je ne trouve rien de tel dans le codex, sur Google ou dans wp-includes/media.php
.
Voici comment j'ai configuré les pièces jointes:
$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 ));
Et voici comment j'essaye de récupérer la galerie pour le thème:
$gallery = get_post_gallery( $post, false );
var_dump( $gallery );
var_dump( $post );
$post
est défini et $gallery
est faux. J'avais l'impression que wp_insert_attachment
créerait une galerie pour le message et y ajouterait la pièce jointe, mais apparemment, ce n'est pas le cas. Si c'était le cas, cela me poserait d'autres problèmes lorsque je joindrai un PDF à la publication.
Lorsque vous ne disposez que de fichiers d’image bruts que vous souhaitez affecter à une publication, wp_insert_attachment
fera le travail.
Avec les pièces jointes déjà présentes dans votre base de données, vous pouvez utiliser wp_update_post
pour définir le post_parent de la pièce jointe. Comme ça:
wp_update_post( array(
'ID' => $attachment_id,
'post_parent' => $parent_post_id,
));
Pour recevoir les pièces jointes d'un message, vous pouvez utiliser get_children
.
$args = array(
'post_parent' => $parent_post_id,
'post_type' => 'attachment',
);
$attachments = get_children( $args );
Si vous insistez pour utiliser get_post_gallery
– qui ne renverra que des pièces jointes à une image, vous devez ajouter le shortcode [gallery]
au contenu de votre publication parent.
Il y a ici une excellente solution PHP qui ajoutera l'éditeur de galerie à l'éditeur de type d'article personnalisé - super, comme moi, vous créez des types d'article personnalisés avec PHP et importez des données à l'aide de WPAllImport . Dans ce cas, je veux m'assurer d'utiliser la galerie par défaut afin de permettre à mes clients de modifier/ajouter/supprimer des images importées.
Le code ci-dessous ajoute l'éditeur de galerie à l'interface de votre éditeur de type de message personnalisé: