Erstellen einer Metabox zum Hochladen mehrerer Bilder

Antworten:

7

Das hängt ganz davon ab, was Sie unter "Anhängen" verstehen.

Jeder WordPress-Beitrag kann bereits mehrere Medienanhänge enthalten - Fotos, Dokumente usw. Sie laden diese mit dem integrierten Uploader hoch und alle werden als "angehängt" an diese bestimmte Beitrags-ID gekennzeichnet.

Sie können später programmatisch an anderer Stelle darauf verweisen. Der folgende Code listet beispielsweise alle Anhänge für einen bestimmten Beitrag auf (Code von Snipplr ) :

$args = array(
    'post_type' => 'attachment',
    'numberposts' => null,
    'post_status' => null,
    'post_parent' => $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);
    }
}

Auf all diese Funktionen kann über die Standardschaltfläche "Medien hinzufügen" ganz rechts neben "Hochladen / Einfügen" auf dem neuen Post-Bildschirm zugegriffen werden. Nachdem Sie ein Bild hinzugefügt haben, können Sie erneut auf "Dateien auswählen" klicken und ein zweites Bild hochladen. Dann ein dritter. Dann ein vierter. So viele wie du willst.

Jedes dieser Bilder wird an den Beitrag "angehängt" ... auch wenn sie nicht in den Inhalt eingefügt werden.

EAMann
quelle
Aus irgendeinem seltsamen Grund kann ich diesen Code nur dazu bringen, den ersten Anhang in der Vorlage auszugeben, obwohl der Rest angehängt ist. Irgendwelche Ideen? Hier ist der Code ... dl.dropbox.com/u/497583/code/wp-attactments.txt
agileapricot
Sie müssen verschiedene Variablen verwenden. Sie verwenden beide $postund $argsin mindestens zwei verschiedenen Kontexten, was es sehr schwierig macht, genau herauszufinden, was Sie gleichzeitig versuchen. Aber ich habe den Code, den ich oben gepostet habe, getestet und er funktioniert ...
EAMann
6

Hier ist ein vollständiges Tutorial mit Quelldateien, die genau das tun, was Sie wollen.
Sie können mehrere Bilder hochladen, indem Sie das Eingabefeld klonen. Außerdem können Sie eine Vorschau anzeigen, Bilder mit Ajax löschen, mehrere Metaboxen zu mehreren / verschiedenen Beitragstypen hinzufügen und vieles mehr.

http://www.deluxeblogtips.com/2010/05/howto-meta-box-wordpress.html

Philip
quelle
Ich unterstütze das. Es wirkt wie ein Zauber.
Manny Fleurmond
Während der von Ihnen bereitgestellte Link jetzt tot ist, hat sich das Referenzprojekt in ein vollwertiges, entwicklerfreundliches Plugin / Bibliothek verwandelt. Siehe: wordpress.org/plugins/meta-box und github.com/wpmetabox ... Sieht nach einem großartigen Produkt aus.
Kerry Randolph
2

Ich würde auch empfehlen, http://www.wpalchemy.com zu besuchen . WPAlchemy ist eine Kick-Ass- "Klasse" (in der Nähe eines Plugins), mit der Sie Ihrer Site auf einfache Weise benutzerdefinierte Meta-Boxen hinzufügen können. Ich benutze es ausgiebig und war beeindruckt von der Benutzerfreundlichkeit und dem Engagement der Entwickler und der aufstrebenden Community.

Internetross
quelle
0

Ja, das ist durchaus möglich. Siehe eine Antwort, die ich über Metaboxen erhalten habe. Grundsätzlich möchten Sie nur einen Hook für save_postdas Nonce-Feld hinzufügen und es überprüfen.

function my_save_post_callback( $post_id, $post )
{
    if ( empty($_POST) || !isset($_POST['my_custom_metabox']) || !wp_verify_nonce( $_POST['my_custom_metabox'], plugin_basename( __FILE__ ) ) )
    {
        return $post->ID;
    }

    // Handle the upload here

}
add_action( 'save_post', 'my_save_post_callback', 1, 2);
Zack
quelle