A maneira de forçar o uploader de mídia a usar o tamanho de imagem personalizado

4

Implementei o aplicativo de envio de mídia para o meu plug-in de imagem de categoria personalizada e queria saber se posso forçá-lo a usar meu tamanho de imagem personalizado que defini apenas para categorias.

...Então,nacapturadetelaacima,eugostariaqueacolunaTamanhocontivesseapenas"Imagem da Categoria (80 x 80)" e fosse selecionada automaticamente.

A maneira como adicionei 'Category Image' à lista é mostrada abaixo

add_filter( 'image_size_names_choose', 'custom_image_sizes_choose' );

function custom_image_sizes_choose( $sizes ) {  
    $custom_sizes = array(  
        'category-image' => 'Category Image'  
    );
    return array_merge( $sizes, $custom_sizes );  
}

Se nessa função eu só retornar $custom_sizes , isso afetará todos os contextos de envio de mídia, por exemplo. Posts- > Adicionar mídia e não apenas ao configurar minha imagem de categoria.

Veja como implementei o Media Uploader no meu plug-in

add_action( 'admin_init', 'cat_image_options_setup' );

//------------------------------------------------
// Setup category image media picker
//------------------------------------------------
function cat_image_options_setup() {
    global $pagenow;
    if ( 'media-upload.php' == $pagenow || 'async-upload.php' == $pagenow ) {
        // Now we'll replace the 'Insert into Post Button inside Thickbox' 
        add_filter( 'gettext', 'replace_thickbox_text' , 1, 2 );
    }
}

//------------------------------------------------
// Replace the media picker button text
//------------------------------------------------
function replace_thickbox_text( $translated_text, $text ) { 
    if ( 'Insert into Post' == $text ) {
        $referer = strpos( wp_get_referer(), 'cat_image_settings' );
        if ( $referer != '' ) {
            return __( 'Add as a category image', 'ddr' );
        }
    }

    return $translated_text;
}

Qualquer maneira de conseguir isso? Obrigado!

PS. Se alguém souber uma maneira melhor de implementar esse aplicativo de envio de mídia, informe-nos. Agora, de alguma forma, usa a janela antiga de envio de mídia, e não o mesmo que em Posts- > Adicione mídia.

    
por micadelli 01.03.2013 / 11:35

1 resposta

1

Ao chamar add_filter( 'image_size_names_choose', 'custom_image_sizes_choose' ); , use suas habilidades de investigação para ver como seria melhor chamar um if(thisweretrue) add_filter( 'image_size_names_choose', 'custom_image_sizes_choose' ); , pois não sei exatamente qual é sua situação específica.

Na verdade, consegui usar sua solução para configurar os tamanhos personalizados para ajudar com o que eu precisava. No meu cenário eu tinha uma caixa meta personalizada que eu criei e nesse metabox personalizado eu tenho um pedaço de um onclick javascript que é chamado que é o seguinte uploadimg_pt('mymetaboxfieldname'); . O Javascript que usei para obter a imagem da biblioteca de mídia é o seguinte:

function uploadimg_pt(pid) {
    window.send_to_editor = function(html) {
        imgurl = jQuery('img',html).attr('src');
        jQuery('#'+pid).val(imgurl);
        tb_remove();
    }
    formfield = jQuery('#'+pid).attr('name');
    tb_show('', 'media-upload.php?type=image&pid='+pid+'&TB_iframe=true');
    return false;
}

Ao usar este javascript, ele abre o gerenciador de mídia em um lightbox que gera um iframe. Em seguida, ele pega o pid no argumento da chamada de função e o coloca na URL ao gerar esse iframe. Nesse iframe que é gerado, ele também chamará o arquivo de funções no modelo. Então o que eu fiz foi definir uma declaração if no meu arquivo de funções assim:

if($_GET['pid'] == "mymetaboxfieldname"){
    add_filter( 'image_size_names_choose', 'custom_image_size_large' );
}
function custom_image_size_large( $sizes ) {
    $custom_sizes = array(  
        'large' => 'Large'  
    );
    return $custom_sizes;  
}

Como eu só precisava do tamanho grande, esse é o que voltei.

Eu não sei seu cenário exato, mas minha esperança é que isso ajude a descobrir o que você precisa no seu.

    
por jaysauce 12.05.2013 / 02:07