外部Webサービスからカスタム投稿タイプにデータを取り込んでいます。このデータには画像が含まれています。イメージギャラリーを作成し、既存の添付ファイルを追加して投稿に関連付けるにはどうすればよいですか。
私が見つけたいと思っていたのは、set_post_gallery
関数のget_post_gallery
対応物のようなものですが、コーデックス、グーグル、またはwp-includes/media.php
にはそのようなものはありません。
これは私が添付ファイルを設定する方法です:
$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 ));
そしてこれが私がテーマのギャラリーを検索しようとしている方法です:
$gallery = get_post_gallery( $post, false );
var_dump( $gallery );
var_dump( $post );
$post
が定義されており、$gallery
はfalseです。 wp_insert_attachment
が投稿用のギャラリーを作成して添付ファイルを追加するという印象を受けましたが、どうやらそうではありません。もしそうであれば、投稿にPDFを添付しようとするとき、それは私にとって他の問題を引き起こすでしょう。
生の画像ファイルがあるだけで、投稿に割り当てたい場合は wp_insert_attachment
がその仕事をします。
データベースに添付ファイルが既に存在する場合は、 wp_update_post
を使用して添付ファイルのpost_parentを設定できます。このような:
wp_update_post( array(
'ID' => $attachment_id,
'post_parent' => $parent_post_id,
));
投稿の添付ファイルを受け取るにはget_children
を使います。
$args = array(
'post_parent' => $parent_post_id,
'post_type' => 'attachment',
);
$attachments = get_children( $args );
画像の添付ファイルのみを返すget_post_gallery
の使用を主張する場合は、[gallery]
ショートコードを親の投稿コンテンツに追加する必要があります。
ここにはカスタム投稿タイプエディタにギャラリーエディタを追加するための素晴らしいPHP解決策があります - 私にとっては素晴らしいですが、PHPを使ってカスタム投稿タイプを作成し、WPAllImportを使ってデータをインポート。この場合、クライアントがインポートされた画像を編集/追加/削除できるように、デフォルトのギャラリーを使用します。
以下のコードは、あなたのカスタム投稿タイプエディタインターフェースにギャラリーエディタを追加します。