Como usar o media uploader do WordPress para adicionar arquivos a meta boxes
August 10, 2011 - No comments yetPouco tempo atrás, para adicionar informações extras a um post ou a uma página (a fonte de um texto ou um link para um vídeo do YouTube que se queira destacar, por exemplo), usávamos diretamente os custom fields, os campos personalizados do WordPress. Bastava atribuir uma chave e um valor para esta chave e depois trata-los dentro dos arquivos do seu tema. Em 2008, a versão 2.5 apresentou as meta boxes, as caixas arrastáveis já conhecidas do WordPress, que permitem a adição de novas informações a posts, custom post types, páginas e links. E elas funcionam perfeitamente com os custom fields.
Surge a ideia: você quer, além de publicar o post, permitir que seus leitores façam o download de algum material relacionado. Há algumas soluções possíveis para esse problema:
- Você pode fazer o upload do arquivo, copiar a URL e criar um link manual (Faça o download do arquivo, ou algo parecido) dentro do seu post;
- Fazer o upload, copiar a URL e joga-la dentro de um custom field (com uma chave chamada upload_file, por exemplo) e criar, dentro do tema, uma área para download do arquivo, usando as funções dos campos personalizados;
- Criar uma meta box e nela inserir a URL do arquivo;
Só que você não quer copiar links de um lado pro outro. Isso é chato e, para muitos clientes, complicado. O interessante seria criar uma meta box com um botão que leve diretamente para o media uploader padrão do WordPress, e assim evitar que você e o seu cliente percam tempo com coisas desnecessárias. E é isso que faremos.
Criando a meta box
Em primeiro lugar, vamos criar a meta box de upload. Ela vai conter um campo de texto, onde será mostrada a URL do arquivo, e um botão que levará ao media uploader do WordPress. Para isso, criamos uma ação dentro do hook add_meta_boxes, responsável por chamar a função my_meta_box(). Dentro dela, a função add_meta_box() cria a nova seção do nosso post / página.
<?php
/*
* Adiciona a meta box para upload do arquivo
*/
add_action( 'add_meta_boxes', 'my_meta_box' );
function my_meta_box()
{
add_meta_box( 'my_meta_uploader', 'Upload de arquivo', 'my_meta_uploader_setup', 'post', 'normal', 'high' );
}
/*
* Adiciona os campos para a meta box de upload
*/
function my_meta_uploader_setup()
{
global $post;
// Procura o valor da chave 'upload_file'
$meta = get_post_meta( $post->ID, 'upload_file', true );
?>
<p>
Clique no botão para fazer o upload de um documento. Após o término do upload, clique em <em>Inserir no post</em>.
</p>
<p>
<input id="upload_file" type="text" size="80" name="upload_file" style="width: 85%;" value="<?php if( ! empty( $meta ) ) echo $meta; ?>" />
<input id="upload_file_button" type="button" class="button" value="Fazer upload" />
</p>
<?php
}
?>
A nossa meta box ficará da seguinte forma:
Salvando os dados
Agora, precisamos fazer três coisas: procurar se há algum valor dentro da chave upload_file, atualizar este valor quando o campo for modificado e salvar estes dados dentro do post através da função my_meta_uploader_save(), que será executada quando na chamada do hook save_post:
<?php
/*
* Salva os dados da nossa custom meta box
*/
add_action( 'save_post', 'my_meta_uploader_save' );
function my_meta_uploader_save( $post_id ) {
if ( ! current_user_can( 'edit_post', $post_id ) ) return $post_id;
// Recebe o valor que foi enviado pelo media uploader
$arquivo = $_POST['upload_file'];
// Adiciona a chave upload_file ou atualiza seu valor
add_post_meta( $post_id, 'upload_file', $arquivo, true ) or update_post_meta( $post_id, 'upload_file', $arquivo );
return $post_id;
}
?>
A integração com o media uploader do WordPress
Enfim, o media uploaders. A ideia é simples: duplicamos a função original e chamamos a sua cópia apenas quando o botão Fazer upload for clicado. Dessa forma, quando fizermos o upload ou procurarmos algum arquivo, o botão Inserir no post preencherá o campo da meta box com a URL do arquivo, e não o editor de texto padrão do WordPress. É necessário avisar no código que usaremos o script quando a área de administração for chamada, representada aqui pelo hook admin_init:
<?php
/*
* Adiciona o script que replica o uploader padrão do WordPress
*/
add_action( 'admin_head', 'my_meta_uploader_script' );
/*
* O novo media uploader, baseado no post e nas discussões do site abaixo
* http://www.webmaster-source.com/2010/01/08/using-the-wordpress-uploader-in-your-plugin-or-theme/
*/
function my_meta_uploader_script() { ?>
<script type="text/javascript">
jQuery(document).ready(function() {
var formfield;
var header_clicked = false;
jQuery( '#upload_file_button' ).click( function() {
formfield = jQuery( '#upload_file' ).attr( 'name' );
tb_show( '', 'media-upload.php?TB_iframe=true' );
header_clicked = true;
return false;
});
// Guarda o uploader original
window.original_send_to_editor = window.send_to_editor;
// Sobrescreve a função nativa e preenche o campo com a URL
window.send_to_editor = function( html ) {
if ( header_clicked ) {
fileurl = jQuery( html ).attr( 'href' );
jQuery( '#upload_file' ).val( fileurl );
header_clicked = false;
tb_remove();
}
else
{
window.original_send_to_editor( html );
}
}
});
</script>
<?php
}
?>
Por último, filtramos o the_content utilizando a função get_post_meta(). O objetivo é criar uma pequena área de download dentro do nosso tema:
<?php
/*
* Download do arquivo
* Adiciona um parágrafo com um link para o arquivo salvo na meta box
*/
add_filter( 'the_content', 'insert_meta_data' );
function insert_meta_data( $content ) {
global $post;
$meta = get_post_meta( $post->ID, 'upload_file', true );
if ( $meta ) {
$content .= '<p class="download-revista">';
$content .= '<a href="' . $meta . '" title="Clique para iniciar o download">';
$content .= 'Faça o download do arquivo';
$content .= '</a>';
$content .= '</p>';
}
return $content;
}
?>
E, finalmente, a nossa singela área de download:
Mais informações
- Custom Fields / Campos personalizados no Codex, a documentação oficial do WordPress
- Hooks, actions e filters
- A função add_meta_box()
- Using the WordPress Uploader in Your Plugin or Theme, com a discussão sobre formas de usar o media uploader nativo
Bloquear um Determinado Plugin de Pedir Atualização
August 10, 2011 - No comments yetAs vezes modificamos um plugin tanto que quando sai uma atualização dele sabemos que vamos perder todas modificações que fizemos, certo? bom o que fazemos então? Sofremos com a barrinha amarela de pedido de atualização do WordPress, que convenhamos é um porre ficar vendo aquilo. Ou então outro cenário, você fez modificações num site de [...]
Procurando ou oferecendo emprego? Participe do DicasWP Jobs
August 9, 2011 - No comments yetPara as pessoas interessadas em estágio ou emprego, de qualquer área de tecnologia ou publicidade, você agora pode usar o nosso sistema de ofertas de emprego. E para as empresas que desejarem exibir suas ofertas, basta preencher o formulário abaixo. O cadastro de ofertas é gratuito.
- Título*
Insira a oferta + a cidade a que ela se destina.
Exemplo: Estágio em Front-End (Recife). - Salário
Insira o valor do salário (ou bolsa) em Reais
- Localização*
Insira a empresa para qual essa oferta se destina.
- Detalhes da Vaga*
Descreva tudo sobre a vaga.
Dentro de até 2 meses, o campo de ofertas será disponível ao público. Assim, qualquer empresa poderá cadastrar sua vaga, sem a necessidade de enviar os dados para mim.
Artigos Relacionados:
Termos que originaram visitas para esse artigo:
Anatel coloca em consulta pública propostas que podem transformar a banda larga no país
August 6, 2011 - No comments yetA Anatel, para mim, é uma das poucas agências que realmente funcionam no Brasil. De todas as solicitações que fiz pra ela, todas foram resolvidas. Ultimamente venho tido problemas com minha internet banda larga, e para se ter uma idéia, enquanto empresas como GVT e Oi Internet prometem 15mbps de Internet, na real, esse valor no mês, pode ser até 10% do valor contratado. É isso mesmo, nem sempre os 15mbps que você contrata são, realmente 15mbps. Empresas como Embratel, por exemplo, oferecem banda larga com 100% do valor contratado. E o valor dos planos geralmente é superior à 400 reais.
A Anatel agora prevê que a velocidade instantânea mínima seja de 20% do valor contratado em 95% das medições. Em 2012 o valor sobe para 30% e em 2013 subirá para 40%. A velocidade média do serviço deverá ser de pelo menos 60% da velocidade contratada, sendo em 2012, 70% e em 2013, 80%. O tempo de uptime (tempo sem cair) do serviço deverá ser de 99%, ou seja, ele poderá ficar offline por no máximo 7h e 12 minutos de interrupção por mês. Em 2012 esse valor subirá para 99,5% o que dá um tempo de interrupção de 3h e 36 minutos. A latência, o maior problema da GVT, deve ficar em no máximo 80ms para conexões terrestres e 500ms para conexões via satélite em 95% das medições.
Outras mudanças também incluem a parte de prestação de serviços. Se houver interrupção no acesso à internet, a operadora deverá avisar o cliente uma semana antes e deverá ressarcir o mesmo nos dias que não houver acesso à internet. Se houver cobrança indevida, ele deverá ser devolvido na conta. Se o cliente pagar o valor indevido, ele terá direito ao dobro do excesso que pagou. Fica proibido realizar mais de um reajuste em 12 meses.
Essas propostas só valem para operadoras com mais de 50 mil clientes. E acredito que a que você esteja usando seja uma delas. As propostas ficarão 30 dias em consulta pública.
Também prevê alterações no atendimento ao consumidor. Sendo o tempo de espera em 85% dos casos não superior à 20 segundos e não poderá ultrapassar 60 segundos de espera. As ligações gravadas devem ser disponibilizadas ao consumidor, em até 10 dias úteis, caso ele solicite. Quando for solicitado conserto, ele deverá ser atendido em até 24 horas em 90% dos casos e nunca em mais de 48 horas. O número de reclamações mensais efetuadas para a operadora não deve exceder 2% do total de acesso. O cancelamento deverá ser feito em até 24 horas, sem nenhum custo ao usuário.
Mais informações: Gizmodo.
Artigos Relacionados:
Termos que originaram visitas para esse artigo:
- consulta pública banda larga
- anatel 400 reais
- anatel banda larga para clientes a tempo
- anatel consulta banda larga
- brasil
- como avisar os cliente sobre excessos
- consulta publica licença compartilhada
- gvt problemas
- nova regra anatel 400 reais
Anatel coloca em consulta pública propostas que podem transformar a banda larga no país
August 6, 2011 - No comments yetA Anatel, para mim, é uma das poucas agências que realmente funcionam no Brasil. De todas as solicitações que fiz pra ela, todas foram resolvidas. Ultimamente venho tido problemas com minha internet banda larga, e para se ter uma idéia, enquanto empresas como GVT e Oi Internet prometem 15mbps de Internet, na real, esse valor no mês, pode ser até 10% do valor contratado. É isso mesmo, nem sempre os 15mbps que você contrata são, realmente 15mbps. Empresas como Embratel, por exemplo, oferecem banda larga com 100% do valor contratado. E o valor dos planos geralmente é superior à 400 reais.
A Anatel agora prevê que a velocidade instantânea mínima seja de 20% do valor contratado em 95% das medições. Em 2012 o valor sobe para 30% e em 2013 subirá para 40%. A velocidade média do serviço deverá ser de pelo menos 60% da velocidade contratada, sendo em 2012, 70% e em 2013, 80%. O tempo de uptime (tempo sem cair) do serviço deverá ser de 99%, ou seja, ele poderá ficar offline por no máximo 7h e 12 minutos de interrupção por mês. Em 2012 esse valor subirá para 99,5% o que dá um tempo de interrupção de 3h e 36 minutos. A latência, o maior problema da GVT, deve ficar em no máximo 80ms para conexões terrestres e 500ms para conexões via satélite em 95% das medições.
Outras mudanças também incluem a parte de prestação de serviços. Se houver interrupção no acesso à internet, a operadora deverá avisar o cliente uma semana antes e deverá ressarcir o mesmo nos dias que não houver acesso à internet. Se houver cobrança indevida, ele deverá ser devolvido na conta. Se o cliente pagar o valor indevido, ele terá direito ao dobro do excesso que pagou. Fica proibido realizar mais de um reajuste em 12 meses.
Essas propostas só valem para operadoras com mais de 50 mil clientes. E acredito que a que você esteja usando seja uma delas. As propostas ficarão 30 dias em consulta pública.
Também prevê alterações no atendimento ao consumidor. Sendo o tempo de espera em 85% dos casos não superior à 20 segundos e não poderá ultrapassar 60 segundos de espera. As ligações gravadas devem ser disponibilizadas ao consumidor, em até 10 dias úteis, caso ele solicite. Quando for solicitado conserto, ele deverá ser atendido em até 24 horas em 90% dos casos e nunca em mais de 48 horas. O número de reclamações mensais efetuadas para a operadora não deve exceder 2% do total de acesso. O cancelamento deverá ser feito em até 24 horas, sem nenhum custo ao usuário.
Mais informações: Gizmodo.
Artigos Relacionados:
Termos que originaram visitas para esse artigo:
- consulta pública banda larga
- anatel 400 reais
- anatel banda larga para clientes a tempo
- anatel consulta banda larga
- brasil
- como avisar os cliente sobre excessos
- consulta publica licença compartilhada
- gvt problemas
- nova regra anatel 400 reais












