Hinzufügen von Medien zu benutzerdefinierten Posts ohne Editor

Ich erstelle einen benutzerdefinierten Beitragstyp, “gallery”, in dem der Administrator Bilder hochladen kann (diese Bilder werden dem Beitrag beigefügt).

Die Sache ist, dass die Meta-Box “Editor” für diesen Post-Typ deaktiviert ist. Und ich brauche eine Möglichkeit, die Popup-Box für das Hochladen von Bildern hinzuzufügen, genau wie es Posts haben. Wie kann ich das machen?

oder vielleicht ist es besser, meinen eigenen Uploader zu erstellen? Wenn ja, wie kann ich die hochgeladenen Bilder an den erstellten Post (Galerie) anhängen?

Wie funktionieren Anhänge? Sind sie auch benutzerdefinierte Post-Typen?

Solutions Collecting From Web of "Hinzufügen von Medien zu benutzerdefinierten Posts ohne Editor"

Am Anfang von wp-admin/edit-form-advanced.php sehe ich den folgenden Code, der mit dem Medien-Uploader zu tun hat:

 if ( post_type_supports($post_type, 'editor') || post_type_supports($post_type, 'thumbnail') ) { add_thickbox(); wp_enqueue_script('media-upload'); } 

Sie müssen diese selbst hinzufügen. add_thickbox() fügt sowohl ein Skript als auch einen Stil in die print_styles . print_scripts Sie also sicher, dass Sie print_styles , da print_scripts zu spät sind, um auch einen Stil zu drucken.

 add_action('admin_print_styles-post-new.php', 'wpa4016_add_media_upload_scripts'); add_action('admin_print_styles-post.php', 'wpa4016_add_media_upload_scripts'); function wpa4016_add_media_upload_scripts() { if ($GLOBALS['post_type'] == 'wpa4016') { add_thickbox(); wp_enqueue_script('media-upload'); } } 

Jetzt müssen wir die Upload-Buttons hinzufügen. Ich sehe the_editor() , die function, die den Editor anzeigt, hat einen Parameter $media_buttons , und wenn wir auf true , wird im Grunde genommen do_action('media_buttons') . Dies wiederum ruft media_buttons() , die _media_button() für jeden Medientyp (Bild, Video, Audio, …) _media_button() . Also machen wir das selbst!

 add_action('edit_form_advanced', 'wpa4016_edit_form_advanced'); function wpa4016_edit_form_advanced() { if ($GLOBALS['post_type'] == 'wpa4016') { echo _media_button(__('Add an Image'), 'images/media-button-image.gif?ver=20100531', 'image'); } } 

Anhänge sind in der Tat benutzerdefinierte Beiträge vom Typ attachment , deren post_parent auf den Post festgelegt ist, an den sie angehängt sind. Bilder haben zwei Meta-Felder: _wp_attached_file enthält den Dateinamen, _wp_attachment_metadata enthält ein Array mit Bild-EXIF-Daten und pointersn auf verschiedene Größen desselben Bildes. Sie können diese selbst erstellen, indem Sie wp_insert_attachment() , aber ich glaube, dass Sie den Upload dann selbst übernehmen müssen.

Obige Antwort ist sehr hilfreiche Antwort, aber traurige Sache ist _media_button () function ist ab wp 3.5 veraltet

Also habe ich obigen Code so geändert:

Ersetzen Sie diese Codezeile echo _media_button(__('Add an Image'), 'images/media-button-image.gif?ver=20100531', 'image');

Mit diesen Zeilen:

 $img = ' '; echo '' . $img . __( 'Add Media' ) . ''; 

Und schließlich habe ich Code verwendet, um meinem Galerieposttyp Media-Button hinzuzufügen

 add_action('admin_print_styles-post-new.php', 'gallery_add_media_upload_scripts'); add_action('admin_print_styles-post.php', 'gallery_add_media_upload_scripts'); function gallery_add_media_upload_scripts() { if ($GLOBALS['post_type'] == 'gallery') { add_thickbox(); wp_enqueue_script('media-upload'); } } add_action('edit_form_advanced', 'gallery_edit_form_advanced'); function gallery_edit_form_advanced() { if ($GLOBALS['post_type'] == 'gallery') { $img = ' '; echo '' . $img . __( 'Add Media' ) . ''; } }