web-dev-qa-db-de.com

Erstellen einer Metabox zum Hochladen mehrerer Bilder, Ignorieren des ausgewählten Bildes

Meine Frage ist im Grunde identisch mit dieser anderen Frage hier , aber meine Frage ist immer noch etwas anders. Ich habe im Grunde einen benutzerdefinierten Beitragstyp namens "Pakete". Jedes Paket kann eine Diashow mit eigenen Bildern haben.

Ich verstehe, dass die Bilder über den Medien-Uploader hochgeladen werden (gemäß der ausgewählten Antwort auf die zugehörigen Fragen). Ist es jedoch möglich, nur eine Liste der Bilder an den Beitrag anzuhängen, die NICHT das vorgestellte Bild sind?

Ich verstehe, dass die Antwort auf die andere Frage alle Bilder einschließlich des ausgewählten Bilds enthält. Behandelt Wordpress ausgewählte Bilder im Hintergrund anders, damit ich sie ausschließen kann?

3

Im Allgemeinen würde ich den Ansatz wählen, nach Post-Anhängen zu fragen, aber den Anhang, der das Post-Thumbnail ist, zurückhalten. WP bietet eine einfache Möglichkeit, die Beitrags-Miniaturbild-ID mit get_post_thumbnail_id ( Codex Ref ) zu ermitteln. Um den Code aus dem anderen Beitrag zu ändern, füge ich dem $args-Array den folgenden Parameter hinzu, um zu verhindern, dass der Thumbnail-Anhang abgefragt wird:

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

Der Parameter post__not_in gibt an, dass der Beitrag NICHT abgerufen werden soll. ( Codex Ref )

Um das Ganze zusammenzufassen, würde der Code so aussehen:

$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);
    }
}

Zur weiteren Feinabstimmung Ihrer Abfragen empfehle ich dringend, die WP_Query-Klasse ( Codex Ref ) zu untersuchen. Seine Leistung ist nur durch seine einfache Bedienung zu übertreffen.

5
tollmanz

Sie können im Grunde den Code aus dieser anderen Frage verwenden und dann das vorgestellte Bild herausfiltern, indem Sie sich die Beitrags-Miniaturbild-ID ansehen.

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

Codex: get_post_thumbnail_id()

2
Geert