web-dev-qa-db-ja.com

複数の画像をアップロードするためのメタボックスの作成、おすすめ画像の無視

私の質問は基本的にこの他の質問 here と同じですが、私の質問はまだ少し異なります。私は基本的に "パッケージ"と呼ばれるカスタム投稿タイプを持っていて、各パッケージはそれ自身の画像を持ったスライドショーを持つことができます。

私は画像がメディアアップローダを通してアップロードされていることを理解しています(関連する質問の答えに従って)。しかし、投稿に添付されている画像のリストのみを掲載することは可能です。

私の理解するところでは、他の質問に対する答えは、特徴的な画像を含むすべての画像を取得するということです。Wordpressは、特徴的な画像を背景とは異なる方法で扱うので除外できますか。

3

一般的に言って、私は投稿の添付ファイルを問い合わせるというアプローチを取りますが、投稿のサムネイルである添付ファイルは差し控えます。 WPはget_post_thumbnail_idCodex Ref )を使って投稿のサムネイルIDを見つける簡単な方法を提供します。もう一方の投稿のコードを変更するには、サムネイルの添付ファイルがクエリされないように、次のパラメータを$args配列に追加します。

'post__not_in' => array(
    get_post_thumbnail_id($post->ID)
)

post__not_inパラメータは、「取得しないように投稿を指定します」となります。 ( コーデックス参照

全体をまとめると、コードは次のようになります。

$args = array(
    'post_type' => 'attachment',
    'numberposts' => null,
    'post_status' => null,
    'post_parent' => $post->ID,
    'post__not_in' => array(
        get_post_thumbnail_id($post->ID)
    )
);
$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $attachment) {
        echo apply_filters('the_title', $attachment->post_title);
        the_attachment_link($attachment->ID, false);
    }
}

クエリをさらに微調整するために、WP_Queryクラス( Codex Ref )を検討することを強くお勧めします。その力は、その使いやすさによってしか匹敵しません。

5
tollmanz

あなたは基本的に その他の質問 のコードを使うことができ、そして投稿のサムネイルIDを見ることによって注目の画像を除外することができます。

foreach ($attachments as $attachment)
{
    // Skip the post thumbnail
    if ($attachment->id == get_post_thumbnail_id())
        continue;
}

コーデックス: get_post_thumbnail_id()

2
Geert