Código de upload de anexos personalizados. Quase lá!

4

O código abaixo reside no functions.php do meu tema e cria um ícone de upload personalizado no topo do editor de conteúdo do WordPress, junto com o ícone de upload padrão.

As imagens enviadas por este ícone recebem um sinalizador especial em wp_postmeta chamado _imageTop para diferenciá-las das imagens anexadas padrão (para permitir que eu faça coisas especiais para elas como uma coleção separada de imagens "anexadas").

Eu tenho 3 problemas ocorrendo e tenho certeza que são correções simples.

1) O filtro attachment_fields_to_save não é aplicado, mesmo que eu possa ver o texto ecoado dentro da janela media-upload.php. Eu sei disso porque a meta _imageTop só é gravada no banco de dados quando eu comento a verificação if (isset)

2) Depois que as imagens foram carregadas, eu tenho que clicar em "Salvar todas as alterações" para obter a meta _imageTop para salvar no banco de dados. Idealmente, gostaria que os dados fossem salvos imediatamente após o upload, sem ter que clicar em "Salvar todas as alterações". Isso provavelmente se deve ao fato de que o manipulador attachment_fields_to_save só dispara no gancho "Salvar todas as alterações". No entanto, eu gostaria de descobrir como fazê-lo disparar quando as imagens forem carregadas.

3) Eu quero remover o link "inserir no post" da tela.

//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);
}
    
por Scott B 23.11.2010 / 18:36

1 resposta

1
  

1) O filtro attachment_fields_to_save não é aplicado, mesmo que eu possa ver o texto ecoado dentro da janela media-upload.php. Eu sei disso porque a meta _imageTop só é gravada no banco de dados quando eu comento a verificação if (isset)

Tente trocar $ _GET com $ _POST e veja se funciona. Se sim, você precisa checar por $ _POST também.

  

2) Depois que as imagens foram carregadas, eu tenho que clicar em "Salvar todas as alterações" para obter a meta _imageTop para salvar no banco de dados. Idealmente, gostaria que os dados fossem salvos imediatamente após o upload, sem ter que clicar em "Salvar todas as alterações". Isso provavelmente se deve ao fato de que o manipulador attachment_fields_to_save só dispara no gancho "Salvar todas as alterações". No entanto, eu gostaria de descobrir como fazê-lo disparar quando as imagens forem carregadas.

Se não for demitido, a única coisa que você pode fazer é ativá-lo, por exemplo, chame a função gancho diretamente. Se isso não for possível (por exemplo, se você não tiver um código executado para que você não possa executar seu código adicional), será necessário procurar outra ação na qual você possa se conectar, por exemplo, aquele que é demitido após o upload. Provavelmente há algum gancho quando a imagem é salva na biblioteca de mídia. Em seguida, você pode armazenar seu campo de postagem personalizado (!) No banco de dados. Apenas para salvá-lo. Eu não sei se o WP é capaz de lidar com isso com o seu sistema de revisão, então você precisa tentar.

  

3) Eu quero remover o link "inserir no post" da tela.

Eu não sei como isso pode ser feito a partir do topo da minha cabeça, você deve verificar o código do núcleo, se houver algo que você pode substituir por / por um gancho.

    
por hakre 24.11.2010 / 23:08