Piratería de Thickbox - eliminando campos

4

Thickbox predeterminado (grande y feo)

No me gusta cómo se ve esta página de Thickbox, casi nunca uso todos estos campos de configuración, así que decidí deshacerme de ellos, al menos en las páginas donde estoy subiendo imágenes como opciones de tema.

UnaThickbox(muy)simple

Usando attachment_fields_to_edit & media_upload_tabs filtros Lo hice mucho más simple:

Siteestáspreguntandocómohacerlo(estosfiltros/ganchosestánmalexplicados),aquíestáelcódigo:

functionthickbox_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');

El problema

Desafortunadamente, después de eliminar los campos de url y tamaño de imagen, no estoy seguro de cómo sobrescribir sus valores con el contenido deseado (en este caso, la url y el tamaño de la imagen están "completos", siempre).

Estoy subiendo cosas basadas en este tutorial simple pero poderoso usando este código en la página de administración:

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

});

Y, como indica el comentario, imgurl = jQuery('img',html).attr('src') está vacío, además, cuando deshabilito solo el tamaño de la imagen y dejo solo la URL: su tamaño siempre se establece en "medio". ¿Alguna idea de cómo solucionarlo?

Estaba intentando pasar la URL y el tamaño de la imagen de esta manera:

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

Sé que estos campos son matrices, pero $form_fields['image-size'] = array('size' => 'full') , tampoco funciona.

¿Alguna sugerencia?

TL; DR : ¿cómo ocultar los campos de url y tamaño de imagen de Thickbox y luego enviar el valor de los campos de url al front-end? Además, cómo forzar a Thickbox para que cargue los archivos como "completos", porque con el tamaño de la imagen sin establecer, devuelve enlaces a las subidas de tamaño medio todo el tiempo.

Supongo que el filtro image_size_input_fields podría ser útil.

    
pregunta Wordpressor 18.02.2012 - 17:22

1 respuesta

4

Difícil, pero una vez que entiendes cómo WordPress establece los tamaños y los campos, el resto es fácil:

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

Primero eliminas todos los campos no deseados, luego imitas la forma en que WordPress crea el campo de tamaños pero solo con la opción seleccionada como completa y ocultas eso usando display:none

y luego lo agrega a la matriz de campos en la forma en que WordPress acepta y, como puede ver, no es solo una cadena simple, sino una matriz de parámetros (etiqueta, entrada, html)

Ahora, para la verdadera pregunta: ¿quién es la niña en la imagen?

    
respondido por el Bainternet 18.02.2012 - 19:44

Lea otras preguntas en las etiquetas