it-swarm.com.de

Einstecken in die Medienbibliothek, um Bilder hochzuladen (KEINEM Beitrag zugeordnet)

Meine alte Frage:

Ich habe ein Theme mit rotierendem Banner gemacht, üblich. Daher möchte ich Benutzern die Möglichkeit geben, Bilder auszuwählen. Ich denke, anstatt meinen eigenen Upload zu implementieren, ist es meiner Meinung nach besser, Benutzern die Verwendung der Medienbibliothek zu ermöglichen. Wie mache ich das?

Der Neue

Bisher habe ich so etwas wie unten

functions.php

// init wordpress media upload stuff ...
if (is_admin() && isset($_GET['page']) && $_GET['page'] == 'elem_opts') {
  wp_enqueue_style('thickbox');
  wp_enqueue_script('media-upload');
  wp_enqueue_script('thickbox');
  wp_register_script('elem_adm_js', get_bloginfo('template_directory') . '/js/admin.js', array('jquery', 'media-upload', 'thickbox'));
  wp_enqueue_script('elem_adm_js');
}

admin.js

jQuery(document).ready(function($) {
    $('#elem_upload_logo').click(function() {
        tb_show('', 'media-upload.php?type=image&TB_iframe=true');
        return false;
    });

    window.send_to_editor = function (html) {
        imgurl = $('img', html).attr('src');
        $('input[name=elem_opts[h_image]]').val(imgurl);
        tb_remove();
    }
});

Das Fenster zum Hochladen der Medienbibliothek erscheint. Ich kann auf Dateien auswählen klicken, aber wenn ich versuche, sie hochzuladen, passiert nichts. In Firebug sehe ich folgendes:

1
JM at Work

Hier sind drei Links, mit denen Sie loslegen können. Ihre Frage sollte klarer sein. Möchten Sie, dass dies wie der Zwanzigertitel funktioniert, indem Sie ein benutzerdefiniertes Feld für Themenoptionen oder eine Kategorie verwenden?

Wie verwende ich das Hochladen von Medien auf einer Themenoptionsseite?
Wie kann ich ein Bild-Upload-Feld direkt zu einem benutzerdefinierten Schreibfeld hinzufügen?
Anhängen von Medien an benutzerdefinierte Posts ohne Editor
Erstellen eines bildzentrierten benutzerdefinierten Beitragstyps?

2
Wyck

1) Ich denke, Sie sollten die JS-Datei ändern. Der send_to_editor ist der Standard-WordPress-Handler, mit dem Bilder in den Editor eingefügt werden. In Ihrem Code haben Sie ihn vollständig ersetzt. Das ist nicht cool. Sie sollten es sichern (ich bin mir nicht sicher, ob dies die Fehler beheben kann, aber zumindest lässt es Ihren Code besser laufen):

Etwas in diesem Code werde ich unten erklären

jQuery(document).ready(function($) {
    $('#elem_upload_logo').click(function() {
        var backup = window.send_to_editor, // backup the original 'send_to_editor' function which adds images to the editor
            post_id = $(this).attr('rel');  // get post ID

        // now you can change the default behavior
        window.send_to_editor = function (html) {
            // check the returned HTML code and do something with it

            // restore the default behavior
            window.send_to_editor = backup;
        }

        tb_show('', 'media-upload.php?type=image&TB_iframe=true&post_id=' + post_id);
        return false;
    });
});

2) Ein weiteres Problem mit Ihrem Code ist, dass die zurückgegebene html möglicherweise keine img Tags enthält. Tatsächlich hängt es davon ab, wie Benutzer das Bild verknüpfen (sie können das Bild mit der Anhangsseite oder der Bilddatei verknüpfen oder nicht mit einer beliebigen Stelle verknüpfen). Der obige Code funktioniert nur, wenn das Bild mit der Bilddatei verknüpft ist.

Sie können diese Situation testen, indem Sie ein Bild in den Editor einfügen und die Art und Weise ändern, in der das Bild verknüpft ist. Sie sehen dann den tatsächlich zurückgegebenen HTML-Code.

3) Das letzte Problem, das ich beim Anzeigen Ihrer Fehler festgestellt habe, ist, dass Sie die Beitrags-ID nicht angegeben haben. Der thinkbox media uploader muss eine Beitrags-ID haben .

Um dies zu beheben, können Sie einen einfachen Trick anwenden: Setzen Sie in Ihrem PHP Code, der den #elem_upload_logo wiedergibt, den rel="<?php echo $post->ID; ?>" und extrahieren Sie dieses Attribut in Ihrem JS-Skript und übergeben Sie es an die URL des Medien-Uploaders (als den obigen Code).

1
Anh Tran