web-dev-qa-db-ja.com

カスタム投稿タイプに画像ギャラリーを追加しますか?

外部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を添付しようとするとき、それは私にとって他の問題を引き起こすでしょう。

1
Dan Ross

生の画像ファイルがあるだけで、投稿に割り当てたい場合は 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]ショートコードを親の投稿コンテンツに追加する必要があります。

2
Jörn Lund

ここにはカスタム投稿タイプエディタにギャラリーエディタを追加するための素晴らしいPHP解決策があります - 私にとっては素晴らしいですが、PHPを使ってカスタム投稿タイプを作成し、WPAllImportを使ってデータをインポート。この場合、クライアントがインポートされた画像を編集/追加/削除できるように、デフォルトのギャラリーを使用します。

以下のコードは、あなたのカスタム投稿タイプエディタインターフェースにギャラリーエディタを追加します。

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

1
Dave Hilditch