Código de cargador de archivos adjuntos personalizados. ¡Casi allí!

4

El siguiente código reside en las funciones de mi tema.php y crea un icono de carga personalizado en la parte superior del editor de contenido de WordPress, junto con el icono de carga predeterminado.

Las imágenes subidas a través de este ícono obtienen una marca especial en wp_postmeta llamada _imageTop para diferenciarlas de las imágenes adjuntas estándar (para poder hacer cosas especiales como una colección separada de imágenes "adjuntas").

Tengo 3 problemas y estoy seguro de que son soluciones simples.

1) El filtro attachment_fields_to_save no se aplica, aunque puedo ver el texto con eco dentro de la ventana media-upload.php. Lo sé porque la meta _imageTop solo se escribe en la base de datos cuando comento la comprobación ifet (isset)

2) Después de que se hayan cargado las imágenes, tengo que hacer clic en "Guardar todos los cambios" para obtener el meta _imageTop para guardar en la base de datos. Idealmente, me gustaría que los datos se guardaran inmediatamente después de la carga, sin tener que hacer clic en "Guardar todos los cambios". Esto se debe probablemente al hecho de que el controlador attachment_fields_to_save solo se activa en el enlace "Guardar todos los cambios". Sin embargo, me gustaría averiguar cómo hacer que se dispare cuando se hayan cargado las imágenes.

3) Quiero eliminar el enlace "insertar en publicación" de la pantalla.

//Upload custom images
function my_customImages($initcontext)
{
    global $post;
    ?>
<script type="text/javascript">
jQuery(document).ready(function() {
    var fileInput = '';
    jQuery('#wpe-uploadAttachments').click(function() {
        fileInput = jQuery(this).prev('input');
        formfield = jQuery('#upload_image').attr('name');
        post_id = jQuery('#post_ID').val();
        tb_show('my Product Images', 'media-upload.php?post_id='+post_id+'&type=image&my_idCustomAttachment=true&TB_iframe=true');
        return false;
    });

});
</script>
    <?php
    return $initcontext. '<input type="hidden" id="post_ID" value="'. $post->ID .'" />&nbsp;&nbsp;&nbsp;Product Images:<a id="wpe-uploadAttachments" href="javascript:;" class="mceButton mceButtonEnabled" onmousedown="return false;" onclick="return false;" title="Click here to upload your product images for this post"><img src="'.get_bloginfo('template_directory') .'/img/upload-icon.gif"" /></a>';
}
add_filter('media_buttons_context', 'my_customImages');

function my_image_attachment_fields_to_save($post, $attachment) {
    update_post_meta($post['ID'], '_imageTop', true);
    return $post;
}

if(isset($_GET['my_idCustomAttachment'])){
    echo "This is true";
    add_filter("attachment_fields_to_save", "my_image_attachment_fields_to_save", null , 2);
}
    
pregunta Scott B 23.11.2010 - 18:36

1 respuesta

1
  

1) El filtro attachment_fields_to_save no se aplica, aunque puedo ver el texto con eco dentro de la ventana media-upload.php. Lo sé porque la meta _imageTop solo se escribe en la base de datos cuando comento la comprobación ifet (isset)

Intenta intercambiar $ _GET con $ _POST y ver si funciona. Si es así, también debe buscar $ _POST.

  

2) Después de que se hayan cargado las imágenes, tengo que hacer clic en "Guardar todos los cambios" para obtener el meta _imageTop para guardar en la base de datos. Idealmente, me gustaría que los datos se guardaran inmediatamente después de la carga, sin tener que hacer clic en "Guardar todos los cambios". Esto se debe probablemente al hecho de que el controlador attachment_fields_to_save solo se activa en el enlace "Guardar todos los cambios". Sin embargo, me gustaría averiguar cómo hacer que se dispare cuando se hayan cargado las imágenes.

Si no se dispara, lo único que puedes hacer es dispararlo tú mismo, por ejemplo. llamar a la función de gancho directamente. Si eso no es posible (por ejemplo, no tiene un código que se ejecuta, por lo que no puede ejecutar su código adicional en ese momento), debe buscar otra acción en la que pueda conectarse, por ejemplo. Uno que se despide después de la carga. Probablemente haya algún gancho cuando la imagen se guarde en la biblioteca de medios. A continuación, también puede almacenar su campo de publicación personalizado (!) En la base de datos. Sólo para tenerlo guardado. No sé si WP es capaz de manejar eso con su sistema de revisión, por lo que debe intentarlo.

  

3) Quiero eliminar el enlace "insertar en publicación" de la pantalla.

No sé cómo se puede hacer esto desde la parte superior de mi cabeza, debes verificar el código del núcleo si hay algo que puedas anular con / por un gancho.

    
respondido por el hakre 24.11.2010 - 23:08

Lea otras preguntas en las etiquetas