Suporte » Desenvolvendo com WordPress » Adicionar mais campos no upload de mídas (além da descrição, legenda, etc)

  • Resolvido Fernando Acosta

    (@amgnando)


    Olá, amigos do fórum!
    A minha dúvida é seguinte: como adicionar mais campos na hora de fazer upload de uma foto. Por exemplo o dia ou nome do fotógrafo.
    O amigo Myst1010 estava me ajudando mas eu não tava entendendo. Agora sim.
    Eu consegui fazer com campos personalizados, mas achei que seria mais interessante para o usuárico comum adicionar diretamente na hora do upload.
    Obrigado, amigos!

Visualizando 7 respostas - 1 até 7 (de um total de 7)
  • É mais adequado usar um plugin próprio para gerenciar imagens, veja em:

    http://codex.wordpress.org/pt-br:Photoblogs_e_Galerias

    Estes plugisn podem obter os dados da imagem automaticamente, sem que precise informar a data que a foto foi tirada, exif etc.

    Ola Dianakc a sua opção é válida, mas em algumas situações a opção de personalizar a galeria seria mais viável creio eu.

    Além de se adicionar o campo que vc deseja e mostrar aos usuários vc ainda pode fazer personalizações extras, elimina o css no post gerado pela galeria e para criadores de tema é uma opção muito boa criar um tema já com uma galeria voltada a fotógrafos.
    ===================================

    A quem se interessar em personalizar a galeria aqui está o tutoriai de onde saiu a idéia.
    http://wpengineer.com/1802/a-solution-for-the-wordpress-gallery/

    Aqui é o tutorial para adicionar campos extras nas imagens do blog, funciona tipo o custom fields de posts, que vc pode adicionar informações e pode mostrá-las ou fazer verificações com elas para gerar um layout diferente.
    http://www.freewebgallerys.com/2010/09/01/creating-custom-fields-for-attachments-in-wordpress/

    Este é o tópico que se iniciou a confusão que tentaremos resolver aqui http://br.forums.wordpress.org/topic/legenda-nas-noticias-da-pagina-inicial?replies=18
    ================================================

    Amgnando voltando a personalização da galeria eu sugiro vc fazer o seguinte:

    crie um arquivo chamado galeria.php e adicione na pasta de seu tema, depois faça um include em seu function.php deste tema com o código

    require(TEMPLATEPATH . '/galeria.php');

    agora para não repetir doto o código sem necessidade siga o tutorial de personalização da galeria do link que postei acima.

    Lembrando que todo o código é para ser colocado no arquivo galeria.php

    2ª parte…

    Agora vamos criar dois campos extras que são vistos quando vc faz um upload de uma imagem. Estes campos serão as informações que vamos amostrar em nossa galeria automaticamente ao adicionar a imagem.

    Este código é só um exemplo e pode ser copiado para o mesmo arquivo galeria.php, no início ou no final dele, tanto faz.

    //Campos extras autor da foto
    function ot_image_attachment_author($form_fields, $post) {
    	$form_fields["ot_author"] = array(
    		"label" => 'Autor da foto',
    		"input" => "text", // Se não for definido, o input será text
    		"value" => get_post_meta($post->ID, "_ot_author", true),
    		"helps" => 'Nome do Autor',
    	);
       return $form_fields;
    }
    add_filter("attachment_fields_to_edit", "ot_image_attachment_author", null, 2);
    
    // campo extra data da foto
    function ot_image_attachment_data($form_fields, $post) {
    	$form_fields["ot_data"] = array(
    		"label" => 'Data',
    		"input" => "text", // Se não for definido, o input será text
    		"value" => get_post_meta($post->ID, "_ot_data", true),
    		"helps" => 'Data em que a imagem foi tirada',
    	);
       return $form_fields;
    }
    add_filter("attachment_fields_to_edit", "ot_image_attachment_data", null, 2);
    
    //Salva as informações no banco de dados
    function ot_image_attachment_fields_to_save($post, $attachment) {
    	if( isset($attachment['ot_author']) ){
    		update_post_meta($post['ID'], '_ot_author', $attachment['ot_author']);
    	}
    	if( isset($attachment['ot_data']) ){
    		update_post_meta($post['ID'], '_ot_data', $attachment['ot_data']);
    	}
    
    	return $post;
    }
    add_filter("attachment_fields_to_save", "ot_image_attachment_fields_to_save", null , 2);

    Observe o código e veja que está sendo adicionado dois campos
    o campo ot_author que receberá o autor da foto e
    ot_data que receberá o dia em que a imagem foi tirada.

    Estes são só exemplos, mas vc pode colocar os campos que quiser.
    Para ver todas as formas de se colocar esses campos e modelos diferentes como textare, text, select etc… dê uma olhada no link que postei no post anterior.

    3ª parte

    Bom inserimos os campos e agora vamos mostrar os valores que foram inseridos nele em nossa galeria.

    Obs: se não for inserido valores nos campos nada será mostrado deixando a galeria funcionando como antes, mas se os campos forem preenchidos, então seus valores serão mostrados.

    Sua galeria personalizada já precisa estar funcionando corretamente, só vamos agora adicionar as informações dos novos campos.

    Então agora abra novamente o galeria.php que foi criado e localize o código

    if ( $captiontag && trim($attachment->post_excerpt) ) {
    		$output .= "
    			<{$captiontag} class='gallery-caption'>
    			" . wptexturize($attachment->post_excerpt) . "
    			</{$captiontag}>";
    	}

    logo abaixo disso copie e cole o seguinte códig

    $attachments = get_posts(array('post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby, 'post_parent' => $post->ID));
    	foreach ( $attachments as $key => $valor ) {
    		$author = get_post_meta($attachment->ID, '_ot_author', true);
    		$data_foto = get_post_meta($attachment->ID, '_ot_data', true);
    		//$campo_futuro = get_post_meta($attachment->ID, '_ot_novo_campo_futuro', true);
    	}
    	if($author) {$output .= "<{$captiontag} class='gallery-caption'>Autor: ".$author."</{$captiontag}>"; }
    	if($data_foto) { $output .= "<{$captiontag} class='gallery-caption'>Data: ".$data_foto."</{$captiontag}>"; }
    	//if($campo_futuro) { $output .= "<{$captiontag} class='gallery-caption'>Campo Futuro: ".$campo_futuro."</{$captiontag}>"; }

    Obs: as partes comentadas referentes ao campo futuro são somente para saber onde adicionar uma futura verificação de um novo campo que vc adicionou.

    Neste momento a galeria já deve estar funcionando e mostrando os novos valores que foram adicionados, logo abaixo do capition normal da galeria.

    Não esqueça que agora vc pode personalizar a galeria mais livremente via css e ele deve estar em seu tema como é mostrado no link do tutorial no post anterior.

    Obrigado pelas respostas. Consegui resolver meu problema.
    Myst1010: antes eu estava fazendo tudo errado mesmo. E eu tava adicionando as variáveis no lugar errado.

    Esse código que você me passou, só insere os valores na galeria e não na imagem simples. Mas com algumas modificações eu consegui resolver.
    Obrigado!

    Na verdade o que eu fiz foi a mesma coisa da galeria. Copiei toda função e desativei a do WP. Mas, por algum motivo, na hora de exibir os campos ele está retornando em branco.
    Olhei mas não consegui descobrir porque.
    Vou ver aqui, se descobrir porque eu posto aqui. Obrigado

Visualizando 7 respostas - 1 até 7 (de um total de 7)
  • O tópico ‘Adicionar mais campos no upload de mídas (além da descrição, legenda, etc)’ está fechado para novas respostas.