it-swarm.com.de

Thickbox-Hacking - Entfernen von Feldern

Standard (groß und hässlich) Thickbox

Mir gefällt nicht, wie diese Thickbox-Seite überhaupt aussieht, ich verwende fast nie all diese Einstellungsfelder, also habe ich beschlossen, sie zu entfernen, zumindest auf Seiten, auf denen ich Bilder als Themenoptionen hochlade. enter image description here

Eine (sehr) einfache Thickbox

Mit attachment_fields_to_edit & media_upload_tabs filters habe ich es viel einfacher gemacht: enter image description here

Wenn Sie sich fragen, wie Sie das machen sollen (diese Filter/Hooks sind schlecht erklärt), hier der Code:

function thickbox_fields($form_fields, $post){
    unset(
       $form_fields['post_title'], //disables "Title" field and so forth...
       $form_fields['url'] );
       $form_fields['image_alt'], 
       $form_fields['post_excerpt'], 
       $form_fields['post_content'], 
       $form_fields['align'], 
       $form_fields['image-size'], 
    );

    return $form_fields;
}

function thickbox_upload_init(){
    add_filter('attachment_fields_to_edit', 'thickbox_fields', 10, 2);
}

add_action('admin_init', 'thickbox_upload_init');

Die Schwierigkeiten

Leider kann ich nach dem Löschen der Felder für die Bildgröße und die URL die Werte nicht mit dem gewünschten Inhalt überschreiben (in diesem Fall ist die URL und die Bildgröße immer auf "voll" gesetzt).

Ich lade Dinge hoch, die auf diesem einfachen, aber leistungsstarken Tutorial basieren und verwende diesen Code auf der Admin-Seite:

jQuery(document).ready(function() {

jQuery('#upload_image_button').click(function() {
 formfield = jQuery('#upload_image').attr('name');
 tb_show('', 'media-upload.php?type=image&TB_iframe=true');
 return false;
});

window.send_to_editor = function(html) {
 imgurl = jQuery('img',html).attr('src'); //imgurl is always empty after deleting url field
 jQuery('#upload_image').val(imgurl);
 tb_remove();
}

});

Und wie der Kommentar besagt, ist imgurl = jQuery('img',html).attr('src') nur leer, zusätzlich, wenn ich nur die Bildgröße deaktiviere und die URL in Ruhe lasse - die Größe ist immer auf "mittel" eingestellt. Irgendwelche Ideen, wie man das behebt?

Ich habe versucht, URL und Bildgröße wie folgt zu übergeben:

 function thickbox_fields($form_fields, $post){
        unset(
           $form_fields['post_title'], //disables "Title" field and so forth...
           $form_fields['url'] );
           $form_fields['image_alt'], 
           $form_fields['post_excerpt'], 
           $form_fields['post_content'], 
           $form_fields['align'], 
           $form_fields['image-size'], 
        );

        $form_fields['url'] = 'not sure how to get the url here, but this doesnt work anyways';
        $form_fields['image-size'] = 'full'; //yup, this also doesn't work at all

        return $form_fields;
    }

Ich weiß, dass diese Felder Arrays sind, aber $form_fields['image-size'] = array('size' => 'full') funktioniert auch nicht.

Irgendwelche Hinweise?

TL; DR- Wie verstecke ich URL- und Bildgrößenfelder vor Thickbox und sende dann den Wert der URL-Felder an das Front-End? Außerdem erfahren Sie, wie Sie Thickbox zwingen, Dateien als "voll" hochzuladen, da bei deaktivierter Bildgröße immer Links zu mittelgroßen Uploads zurückgegeben werden.

Ich denke, image_size_input_fields Filter könnte hilfreich sein.

4
Wordpressor

Tricky, aber sobald Sie verstehen, wie WordPress die Größen und Felder einstellt, ist der Rest einfach:

function thickbox_fields($form_fields, $post){
    unset(
        $form_fields['post_title'], //disables "Title" field and so forth...
        $form_fields['url'],
        $form_fields['image_alt'], 
        $form_fields['post_excerpt'], 
        $form_fields['post_content'], 
        $form_fields['align'], 
        $form_fields['image-size']
    );

    //create the size input for full only and set display to none
    $size = 'full';
    $css_id = "image-size-{$size}-{$post->ID}";
    $html = "<div style='display: none;' class='image-size-item'><input type='radio' name='attachments[$post->ID][image-size]' id='{$css_id}' value='{$size}'checked='checked' /></div>";
    //set as image-size field
    $form_fields['image-size'] = array(
        'label' => '', //leave with no label
        'input' => 'html', //input type is html
        'html' => $html //the actual html
    ); 

    return $form_fields;
}

Zuerst entfernen Sie alle unerwünschten Felder, dann ahmen Sie nach, wie WordPress das Feld "Größen" erstellt, jedoch nur mit der Option "Voll" und Sie verbergen dies mit display:none

und dann fügst du es dem Fields-Array hinzu, wie es WordPress akzeptiert und wie du sehen kannst, ist es nicht nur ein einfacher String, sondern ein Array von Parametern (label, input, html).

Nun zur eigentlichen Frage: Wer ist das Mädchen auf dem Bild ???

4
Bainternet