<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Comunidade WordPress-BR &#187; Eduardo Zulian</title>
	<atom:link href="http://wp-brasil.org/author/eduardo/feed" rel="self" type="application/rss+xml" />
	<link>http://wp-brasil.org</link>
	<description>Site da Comunidade Brasileira de WordPress</description>
	<lastBuildDate>Wed, 09 May 2012 21:15:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Como usar o media uploader do WordPress para adicionar arquivos a meta boxes</title>
		<link>http://wp-brasil.org/wpbrasil/como-usar-o-media-uploader-do-wordpress-para-adicionar-arquivos-a-meta-boxes</link>
		<comments>http://wp-brasil.org/wpbrasil/como-usar-o-media-uploader-do-wordpress-para-adicionar-arquivos-a-meta-boxes#comments</comments>
		<pubDate>Wed, 10 Aug 2011 20:28:35 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[wpbrasil]]></category>

		<guid isPermaLink="false">http://ethymos.com.br/?p=443</guid>
		<description><![CDATA[Pouco 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 [...]]]></description>
			<content:encoded><![CDATA[<p>Pouco 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 <a title="Custom fields / Campos personalizados" href="http://codex.wordpress.org/Custom_Fields">custom fields</a>, 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, <a title="Custom Post Types" href="http://codex.wordpress.org/Custom_Post_Types">custom post types</a>, páginas e links. E elas funcionam perfeitamente com os custom fields.</p>
<p>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:</p>
<ol>
<li>Você pode fazer o upload do arquivo, copiar a URL e criar um link manual (<em>Faça o download do arquivo</em>, ou algo parecido) dentro do seu post;</li>
<li>Fazer o upload, copiar a URL e joga-la dentro de um custom field (com uma chave chamada <strong>upload_file</strong>, por exemplo) e criar, dentro do tema, uma área para download do arquivo, usando as <a href="http://codex.wordpress.org/Custom_Fields#Displaying_Custom_Fields">funções dos campos personalizados</a>;</li>
<li>Criar uma meta box e nela inserir a URL do arquivo;</li>
</ol>
<p>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.</p>
<h2>Criando a meta box</h2>
<p>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 href="http://codex.wordpress.org/Plugin_API#Hooks.2C_Actions_and_Filters">ação</a> dentro do hook <strong>add_meta_boxes</strong>, responsável por chamar a função <strong>my_meta_box()</strong>. Dentro dela, a função <a href="http://codex.wordpress.org/Function_Reference/add_meta_box"><strong>add_meta_box()</strong></a> cria a nova seção do nosso post / página.</p>
<pre class="brush: php; title: ;">

&lt;?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-&gt;ID, 'upload_file', true );
	?&gt;

	&lt;p&gt;
		Clique no botão para fazer o upload de um documento. Após o término do upload, clique em &lt;em&gt;Inserir no post&lt;/em&gt;.
	&lt;/p&gt;

	&lt;p&gt;
		&lt;input id=&quot;upload_file&quot; type=&quot;text&quot; size=&quot;80&quot; name=&quot;upload_file&quot; style=&quot;width: 85%;&quot; value=&quot;&lt;?php if( ! empty( $meta ) ) echo $meta; ?&gt;&quot; /&gt;
		&lt;input id=&quot;upload_file_button&quot; type=&quot;button&quot; class=&quot;button&quot; value=&quot;Fazer upload&quot; /&gt;
	&lt;/p&gt;

	&lt;?php
}

?&gt;
</pre>
<p>A nossa meta box ficará da seguinte forma:</p>
<div id="attachment_455" class="wp-caption aligncenter" style="width: 541px"><a href="http://ethymos.com.br/ethymos-2010/wp-content/uploads/2011/04/meta-box.png" rel="shadowbox[post-443];player=img;" title="A meta box, já implementada"><img class="size-large wp-image-455 " title="A meta box, já implementada" src="http://ethymos.com.br/ethymos-2010/wp-content/uploads/2011/04/meta-box-540x60.png" alt="" width="531" height="59" /></a><p class="wp-caption-text">A meta box, já implementada, como vocês podem ver nesta enorme imagem</p></div>
<h2>Salvando os dados</h2>
<p>Agora, precisamos fazer três coisas: procurar se há algum valor dentro da chave <strong>upload_file</strong>, atualizar este valor quando o campo for modificado e salvar estes dados dentro do post através da função <strong>my_meta_uploader_save()</strong>, que será executada quando na chamada do hook <strong>save_post</strong>:</p>
<pre class="brush: php; title: ;">

&lt;?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;
}

?&gt;
</pre>
<h2>A integração com o media uploader do WordPress</h2>
<p>Enfim, o media uploaders. A ideia é simples: duplicamos a função original e chamamos a sua cópia apenas quando o botão <strong>Fazer upload</strong> for clicado. Dessa forma, quando fizermos o upload ou procurarmos algum arquivo, o botão <strong>Inserir no post</strong> 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 <strong>admin_init</strong>:</p>
<pre class="brush: php; title: ;">

&lt;?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() { ?&gt;
	&lt;script type=&quot;text/javascript&quot;&gt;
		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 );
			  	}
			}

		});
  &lt;/script&gt;
&lt;?php
}

?&gt;
</pre>
<p>Por último, filtramos o <strong>the_content </strong>utilizando a função <a href="http://codex.wordpress.org/Function_Reference/get_post_meta"><strong>get_post_meta()</strong></a>. O objetivo é criar uma pequena área de download dentro do nosso tema:</p>
<pre class="brush: php; title: ;">

&lt;?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-&gt;ID, 'upload_file', true );

	if ( $meta ) {
		$content .= '&lt;p class=&quot;download-revista&quot;&gt;';
		$content .= '&lt;a href=&quot;' . $meta . '&quot; title=&quot;Clique para iniciar o download&quot;&gt;';
		$content .= 'Faça o download do arquivo';
		$content .= '&lt;/a&gt;';
		$content .= '&lt;/p&gt;';
	}

	return $content;

}

?&gt;
</pre>
<p>E, finalmente, a nossa singela área de download:</p>
<div id="attachment_492" class="wp-caption aligncenter" style="width: 522px"><a href="http://ethymos.com.br/ethymos-2010/wp-content/uploads/2011/05/post2.png" rel="shadowbox[post-443];player=img;" title="O post, já com o link para download"><img class="size-full wp-image-492  " title="O post, já com o link para download" src="http://ethymos.com.br/ethymos-2010/wp-content/uploads/2011/05/post2.png" alt="" width="512" height="250" /></a><p class="wp-caption-text">O post, já com o link para download</p></div>
<h2>Mais informações</h2>
<ul>
<li><a href="http://codex.wordpress.org/Custom_Fields">Custom Fields / Campos personalizados</a> no Codex, a documentação oficial do WordPress</li>
<li><a href="http://codex.wordpress.org/Plugin_API#Hooks.2C_Actions_and_Filters">Hooks, actions e filters</a></li>
<li><a href="http://codex.wordpress.org/Function_Reference/add_meta_box">A função <strong>add_meta_box()</strong></a></li>
<li><a href="http://www.webmaster-source.com/2010/01/08/using-the-wordpress-uploader-in-your-plugin-or-theme/">Using the WordPress Uploader in Your Plugin or Theme</a>, com a discussão sobre formas de usar o media uploader nativo</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/wpbrasil/como-usar-o-media-uploader-do-wordpress-para-adicionar-arquivos-a-meta-boxes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Ethymos está apoiando o WordCamp Curitiba</title>
		<link>http://wp-brasil.org/wpbrasil/a-ethymos-esta-apoiando-o-wordcamp-curitiba</link>
		<comments>http://wp-brasil.org/wpbrasil/a-ethymos-esta-apoiando-o-wordcamp-curitiba#comments</comments>
		<pubDate>Wed, 20 Oct 2010 21:52:40 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[wpbrasil]]></category>

		<guid isPermaLink="false">http://ethymos.com.br/ethymos-2010/?p=223</guid>
		<description><![CDATA[A comunidade brasileira de WordPress está organizando, agora em outubro, o WordCamp Curitiba, a segunda edição do evento no Brasil. Marcado para os dias 22 e 23, na FESP, o WordCamp contará com minicursos, palestras, rodas de debate e discussões sobre a própria comunidade brasileira de WordPress. Tradução de plugins, desenvolvimento de temas, BuddyPress e [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://wp-brasil.org/">comunidade brasileira de WordPress</a> está organizando, agora em outubro, o <a title="WordCamp Curitiba" href="http://curitiba.wordcamp.com.br">WordCamp Curitiba</a>, a segunda edição do evento no Brasil. Marcado para os dias 22 e 23, na <a title="FESP-PR" href="http://www.fesppr.br">FESP</a>, o WordCamp contará com minicursos, palestras, rodas de debate e discussões sobre a  própria comunidade brasileira de WordPress. Tradução de plugins, desenvolvimento de temas, BuddyPress e redes sociais estão entre os assuntos que serão abordados neste final de semana.</p>
<p>O WordCamp<strong> </strong>é uma conferência sobre WordPress que acontece no mundo todo. Nele, desenvolvedores, designers e usuários  casuais assistem a palestras e apresentações, trocam ideias e se  conhecem num  ambiente informal. Originado nos  Estados Unidos, o evento tem agora sua segunda edição aqui no Brasil (a primeira, o WordCamp Brasil, ocorreu ano passado) e a Ethymos, junto com as agências <a title="PontoCom" href="http://agenciadeinternet.com/">PontoCom</a>, <a title="Hacklab" href="http://hacklab.com.br">Hacklab</a> e o coletivo <a title="Coletivo Soylocoporti" href="http://soylocoporti.org.br">Soylocoporti</a>, estão apoiando e ajudando na organização.</p>
<p>Para mais informações, visite o site oficial do <a title="WordCamp Curitiba" href="http://curitiba.wordcamp.com.br">WordCamp Curitiba</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/wpbrasil/a-ethymos-esta-apoiando-o-wordcamp-curitiba/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordCamp Curitiba no dia 22 de outubro</title>
		<link>http://wp-brasil.org/novidades/wordcamp-curitiba-no-dia-22-de-outubro</link>
		<comments>http://wp-brasil.org/novidades/wordcamp-curitiba-no-dia-22-de-outubro#comments</comments>
		<pubDate>Thu, 09 Sep 2010 14:37:50 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Novidades]]></category>
		<category><![CDATA[wordcamp]]></category>
		<category><![CDATA[wordcamp curitiba]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=2024</guid>
		<description><![CDATA[A Comunidade WordPress-BR está organizando o WordCamp Curitiba, que ocorrerá nos dias 22 e 23 de outubro, na FESP, no centro da cidade. Esta, que será a segunda edição do WordCamp no Brasil, se diferencia do evento do ano passado, que tinha como objetivo ser um encontro nacional e mais abrangente. Desta vez, seguindo a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://wp-brasil.org/wp-content/uploads/2010/09/wordcamp.png" alt="" title="wordcamp" width="451" height="297" class="alignnone size-full wp-image-2053" /><br />
A Comunidade WordPress-BR está organizando o WordCamp Curitiba, que ocorrerá nos dias 22 e 23 de outubro, na FESP, no centro da cidade. Esta, que será a segunda edição do WordCamp no Brasil, se diferencia do evento do ano passado, que tinha como objetivo ser um encontro nacional e mais abrangente. Desta vez, seguindo a ideia do <a href="http://central.wordcamp.org/about/">WordCamp Central</a>, desenvolvedores, designers, blogueiros e usuários terão um encontro local, descentralizado e que, esperamos, seja o primeiro de muitos por todo o país.</p>
<p>Inscrições, palestras, grade de atividades e outras informações logo estarão disponíveis aqui no site da comunidade.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/novidades/wordcamp-curitiba-no-dia-22-de-outubro/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Como remover os widgets nativos do WordPress 2.8</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/como-remover-os-widgets-nativos-do-wordpress-2-8</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/como-remover-os-widgets-nativos-do-wordpress-2-8#comments</comments>
		<pubDate>Wed, 08 Jul 2009 03:16:46 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Dicas e Tutoriais]]></category>
		<category><![CDATA[actions]]></category>
		<category><![CDATA[intermediário]]></category>
		<category><![CDATA[sidebar]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=1317</guid>
		<description><![CDATA[Uma simples forma de retirar os widgets que já acompanham a sua instalação do WordPress]]></description>
			<content:encoded><![CDATA[<p>Os widgets funcionam como plugins, adicionando ou removendo funcionalidades em um site. A diferença é que, através deles, você pode mudar elementos dentro do seu tema sem precisar mexer diretamente no código. Essa é uma boa estratégia quando você quer trocar rapidamente áreas (falar em <em>sidebars</em> neste caso não é mais correto, já que os widgets podem ser usados em qualquer parte do tema) do seu site, alterando-o sem muito esforço.</p>
<p>Ainda que alguns plugins como o <a href="http://justintadlock.com/archives/2008/12/09/widgets-reloaded-wordpress-plugin">Widgets Reloaded</a> transformem os widgets nativos consideravelmente, alguns são tão limitados que talvez você não precise deles. Nem você nem o seu cliente. E a solução pra isso é simples: remover do painel de administração os widgets que você não vai usar e manter apenas os importantes para o seu tema.</p>
<div id="attachment_1357" class="wp-caption alignnone" style="width: 472px"><a href="http://wp-brasil.org/wp-content/uploads/2009/07/como-remover-widgets-nativos.png"><img class="size-large wp-image-1357" src="http://wp-brasil.org/wp-content/uploads/2009/07/como-remover-widgets-nativos-462x122.png" alt="No painel de administração, com os widgets nativos já removidos" width="462" height="122" /></a><p class="wp-caption-text">No painel de administração, com os widgets nativos já removidos</p></div>
<p>Para isso, abra o seu arquivo <code>functions.php</code> e insira as seguintes linhas:</p>
<pre class="brush: php">

function remover_widgets() {

    // Caso queira manter algum widget, apenas comente a linha desejada

    unregister_widget( &#039;WP_Widget_Archives&#039; );
    unregister_widget( &#039;WP_Widget_Calendar&#039; );
    unregister_widget( &#039;WP_Widget_Categories&#039; );
    unregister_widget( &#039;WP_Widget_Links&#039; );
    unregister_widget( &#039;WP_Widget_Meta&#039; );
    unregister_widget( &#039;WP_Widget_Pages&#039; );
    unregister_widget( &#039;WP_Widget_Recent_Comments&#039; );
    unregister_widget( &#039;WP_Widget_Recent_Posts&#039; );
    unregister_widget( &#039;WP_Widget_RSS&#039; );
    unregister_widget( &#039;WP_Widget_Search&#039; );
    unregister_widget( &#039;WP_Widget_Tag_Cloud&#039; );
    unregister_widget( &#039;WP_Widget_Text&#039; );

}

// Adiciona a nossa função ao hook widgets_init

add_action( &#039;widgets_init&#039;, &#039;remover_widgets&#039; );
</pre>
<p>Criamos uma função, <code>remover_widgets()</code>, que vai agregar todos os <code>unregister_widget()</code> e, através deles, remover as funcionalidades que não desejamos. Após isso, o código executa a <a href="http://codex.wordpress.org/Function_Reference/add_action"><code>add_action()</code></a>, que registra a nossa função para ser executada quando a área de widgets for iniciada. E é isso. Agora é só entrar no painel de administração do WordPress e ver que os widgets já não estão mais lá.</p>
<p>Veja também:</p>
<ul>
<li><a href="http://codex.wordpress.org/Version_2.8#New_Widgets_API">A nova API de widgets do WordPress 2.8</a></li>
<li><a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/default-widgets.php">Exemplo do código dos widgets nativos na versão 2.8</a> (você pode encontrar este arquivo na sua instalação do WordPress, em <em>wp-includes/default-widgets.php</em>)</li>
<li><a href="http://codex.wordpress.org/Function_Reference/add_action">A função add_action</a></li>
<li><a href="http://codex.wordpress.org/Plugin_API#Hooks.2C_Actions_and_Filters">Hooks do WordPress</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/como-remover-os-widgets-nativos-do-wordpress-2-8/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Divulgada a programação do WordCamp</title>
		<link>http://wp-brasil.org/novidades/wordcamp-brasil/divulgada-a-programacao-do-wordcamp</link>
		<comments>http://wp-brasil.org/novidades/wordcamp-brasil/divulgada-a-programacao-do-wordcamp#comments</comments>
		<pubDate>Tue, 16 Jun 2009 19:17:20 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[WordCamp Brasil]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=1156</guid>
		<description><![CDATA[Além da abertura por Matt Mullenweg e a palestra sobre BuddyPress que será dada por José Fontainhas, ambas já comentadas aqui, divulgamos agora a programação do primeiro WordCamp Brasil. As palestras e cases abordarão temas como SEO, Blog Promotion, WordPress para designers, carreira, portais para rede de ensino, WordPress MU, blogsfera e uso do BuddyPress [...]]]></description>
			<content:encoded><![CDATA[<p>Além da abertura por Matt Mullenweg e a palestra sobre BuddyPress que será dada por José Fontainhas, ambas já comentadas aqui, divulgamos agora a programação do primeiro WordCamp Brasil.</p>
<p>As palestras e cases abordarão temas como SEO, <em>Blog Promotion</em>, WordPress para designers, carreira, portais para rede de ensino, WordPress MU, blogsfera e uso do BuddyPress em sites governamentais. Em paralelo, ocorrerão as rodas de discussão, nas quais os temas serão escolhidos durante o próprio evento.</p>
<table border="0" cellspacing="0" summary="Programação do WordCamp Brasil">
<tbody></tbody>
<caption> Programação do WordCamp Brasil<br />
</caption>
<tbody>
<tr>
<td class="hora">08h30 &#8211; 09h00</td>
<td>Credenciamento</td>
</tr>
<tr>
<td class="hora">09h00 &#8211; 09h15</td>
<td>Abertura</td>
</tr>
<tr>
<td class="hora">09h15 &#8211; 10h15</td>
<td>Apresentação, por <em>Matt Mullenweg</em></td>
</tr>
<tr>
<td class="hora" rowspan="2">10h30 &#8211; 11h30</td>
<td>WordPress para designers, por <em>Felipe Coelho Kussik</em></td>
</tr>
<tr>
<td>Case: Portal Institucional e Sites para Rede de Ensino, por <em>Paulo Sandro Martins</em></td>
</tr>
<tr>
<td class="hora">11h30 &#8211; 11h45</td>
<td>Intervalo</td>
</tr>
<tr>
<td class="hora" rowspan="2">11h45 &#8211; 12h45</td>
<td>BuddyPress, por <em>José Fontainhas</em></td>
</tr>
<tr>
<td>Blog Promotion &#8211; Como Atrair e Manter Leitores No Seu Blog, por <em>Daniel Scocco</em></td>
</tr>
<tr>
<td class="hora">12h45 &#8211; 14h00</td>
<td>Intervalo</td>
</tr>
<tr>
<td class="hora" rowspan="2">14h00 &#8211; 15h00</td>
<td>Mesa Carreira 2.0: como mídias sociais formam a sua identidade profissional e ajudam &#8211; ou se tornam &#8211; o seu ganha-pão.</td>
</tr>
<tr>
<td>Case: Ministério da Cultura e site Cultura Digital com BuddyPress, por <em>Guilherme Aguiar</em></td>
</tr>
<tr>
<td class="hora">15h &#8211; 15h15</td>
<td>Intervalo</td>
</tr>
<tr>
<td class="hora" rowspan="2">15h15 &#8211; 16h15</td>
<td>A blogosfera e o mar de flores, por <em>Marcelo Estraviz</em></td>
</tr>
<tr>
<td>Case: Cartografia da Blogosfera Brasileira: a perspectiva amazônica dos blogs, por <em>Fábio Malini</em></td>
</tr>
<tr>
<td class="hora">16h15 &#8211; 16h30</td>
<td>Intervalo</td>
</tr>
<tr>
<td class="hora" rowspan="2">16h30 &#8211; 17h30</td>
<td>SEO para WordPress &#8211; Otimizando o que já é bom, por <em>Paulo Rodrigo Teixeira</em></td>
</tr>
<tr>
<td>Case: Pensando em WordPress para grandes audiencias, por <em>Diego Cox</em></td>
</tr>
<tr>
<td class="hora">17h30 &#8211; 17h45</td>
<td>Encerramento</td>
</tr>
</tbody>
</table>
<p>Mais informações sobre o evento na <a href="http://wp-brasil.org/wordcamp-brasil">página do WordCamp Brasil</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/novidades/wordcamp-brasil/divulgada-a-programacao-do-wordcamp/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WordPress e WordPress MU vão se unir?</title>
		<link>http://wp-brasil.org/novidades/wordpress-e-wordpress-mu-vao-se-unir</link>
		<comments>http://wp-brasil.org/novidades/wordpress-e-wordpress-mu-vao-se-unir#comments</comments>
		<pubDate>Tue, 02 Jun 2009 14:01:22 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[Novidades]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=1130</guid>
		<description><![CDATA[Matt Mullenweg, criador do WordPress, anunciou no WordCamp San Francisco que as plataformas até então separadas WordPress e WordPress MU vão se unir. A ideia, aparentemente, é adicionar ao já famoso WordPress as boas funcionalidades do MU (multi-user), tendo como principal delas a possibilidade de criação de inúmeros blogs em apenas uma instalação. Aaron Brazeel, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ma.tt">Matt Mullenweg</a>, criador do WordPress, anunciou no WordCamp San Francisco que as plataformas até então separadas WordPress e <a href="http://mu.wordpress.org">WordPress MU</a> vão se unir. A ideia, aparentemente, é adicionar ao já famoso WordPress as boas funcionalidades do MU (<em>multi-user</em>), tendo como principal delas a possibilidade de criação de inúmeros blogs em apenas uma instalação.</p>
<p>Aaron Brazeel, do site <a href="http://technosailor.com/2009/05/30/wordcamp-sf-announcement-wordpress-and-wordpress-mu-to-merge/">Technosailor</a>, conversou com algumas pessoas presentes no evento. De acordo com ele, poucos detalhes foram dados por Matt, mas eles sugerem que o administrador terá a opção de ativar as funcionalidades do WordPress MU tanto no momento da instalação quanto depois, com o sistema já rodando.</p>
<p>Ainda não se sabe quando essa união ocorrerá, mas especula-se que o processo esteja finalizado para a versão 2.9 da plataforma.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/novidades/wordpress-e-wordpress-mu-vao-se-unir/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Algumas correções sobre a vinda de Matt Mullenweg para o Brasil</title>
		<link>http://wp-brasil.org/novidades/algumas-correcoes-sobre-a-vinda-de-matt-mullenweg-para-o-brasil</link>
		<comments>http://wp-brasil.org/novidades/algumas-correcoes-sobre-a-vinda-de-matt-mullenweg-para-o-brasil#comments</comments>
		<pubDate>Sat, 25 Apr 2009 18:57:25 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[Novidades]]></category>
		<category><![CDATA[WordCamp Brasil]]></category>
		<category><![CDATA[CMS Brasil]]></category>
		<category><![CDATA[Matt Mullenweg no Brasil]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=933</guid>
		<description><![CDATA[Tendo em vista alguns desencontros de informações, principalmente via Twitter, são necessários alguns esclarecimentos sobre o WordCamp Brasil e, principalmente, sobre a vinda de Matt Mullenweg, criador do WordPress, para o evento. Matt vem para o CMS Brasil 2009, encontro de desenvolvedores realizado pela iMasters e promovido pela Fábrica Livre. O evento, que ocorrerá em [...]]]></description>
			<content:encoded><![CDATA[<p>Tendo em vista alguns desencontros de informações, principalmente <a href="http://search.twitter.com/search?q=wordcamp+brasil">via Twitter</a>, são necessários alguns esclarecimentos sobre o WordCamp Brasil e, principalmente, sobre a vinda de Matt Mullenweg, criador do WordPress, para o evento.</p>
<p>Matt vem para o <a href="http://www.cmsbrasil2009.com/">CMS Brasil 2009</a>, encontro de desenvolvedores realizado pela <a href="http://imasters.com.br">iMasters</a> e promovido pela <a href="http://www.fabricalivre.com.br/">Fábrica Livre</a>. O evento, que ocorrerá em São Paulo, no dia 20/06, vai contar não só com Matt, mas também com Anthony Ferrara, coordenador mundial de desenvolvimento do Joomla!, Addison Berry, líder do time de documentação do projeto Drupal, além de mais doze palestrantes brasileiros.</p>
<p>De acordo com o site oficial do evento, Matt terá duas horas no auditório principal, as quais serão divididas entre palestra e mesa redonda intermediada pelo Paulino Michelazzo e com a participação da Cátia Kitahara, representando a nossa comunidade. Além da participação da Cátia, nossa comunidade será representada pelo Leo Germani, que dará uma palestra sobre o uso do WordPress como um CMS completo e não apenas uma plataforma de blogs.</p>
<h4>WordCamp Brasil</h4>
<p>Aproveitando a presença de Matt Mullenweg no Brasil, nós da Comunidade WordPress-BR resolvemos fazer o nosso WordCamp no dia seguinte ao CMS-Brasil. Tal decisão foi tomada após consultarmos os organizadores do evento CMS Brasil e a assessoria de Matt Mullenweg, que apoiaram a idéia.</p>
<p>Portanto, queremos dar ao iMasters e à Fábrica Livre os devidos créditos por trazer o Matt Mullenweg ao Brasil e agradecê-los a oportunidade de realizarmos nosso encontro.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/novidades/algumas-correcoes-sobre-a-vinda-de-matt-mullenweg-para-o-brasil/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Inscrições para o Google Summer of Code 2009 acabam hoje</title>
		<link>http://wp-brasil.org/novidades/wordpress-no-google-summer-of-code-2009</link>
		<comments>http://wp-brasil.org/novidades/wordpress-no-google-summer-of-code-2009#comments</comments>
		<pubDate>Fri, 03 Apr 2009 14:01:23 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[Novidades]]></category>
		<category><![CDATA[google summer of code]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=648</guid>
		<description><![CDATA[As incrições para o Google Summer of Code, o incentivo da Google a estudantes que queiram desenvolver soluções open-source para os mais variados projetos, acabam hoje. Agora no seu quinto ano, o programa já contou com mais de 230 projetos, inclusive idéias ligadas diretamente ao WordPress. Como no ano passado, há uma página especial no [...]]]></description>
			<content:encoded><![CDATA[<p>As incrições para o <a href="http://code.google.com/soc/">Google Summer of Code</a>, o incentivo da Google a estudantes que queiram desenvolver soluções open-source para os mais variados projetos, acabam hoje. Agora no seu <a href="http://codex.wordpress.org/GSoC2009">quinto ano</a>, o programa já contou com mais de 230 projetos, inclusive idéias ligadas diretamente ao WordPress.</p>
<p>Como no ano passado, há uma <a href="http://codex.wordpress.org/GSoC2009">página especial no Codex sobre o GSoC</a>. Nela estão algumas idéias de melhorias para a plataforma, divididas em áreas como BuddyPress, mídia, buscas e frameworks de temas, cada uma com seus respectivos mentores. O texto também recomenda que os possíveis interessados façam uso das <a href="http://wordpress.org/extend/ideas/?show=popular">idéias</a> que são enviadas pela comunidade. Na lista <a href="http://lists.automattic.com/mailman/listinfo/wp-hackers">wp-hackers</a>, alguns projetos já circulam há algum tempo:</p>
<ul>
<li><a href="http://koopersmith.wordpress.com/">Framework de temas dinâmico</a>, por Daryl Koopersmith</li>
<li><a href="http://scompt.com/archives/2009/03/29/wordpress-gsoc-2009-idea-workflow">Fluxos de criação/edição</a>, por Edward Dale</li>
<li><a href="http://www.xvpj.net/gsoc-09-application-wordpress-advance-search/">Pesquisa avançada</a>, por Varuna Jayasiri</li>
<li><a href="http://isrobin.com/wordpress/?p=30">Editor inline de front-end</a>, por Robin Chang</li>
</ul>
<p>Desenvolvedores, corram!</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/novidades/wordpress-no-google-summer-of-code-2009/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin Readme File Generator</title>
		<link>http://wp-brasil.org/temas-e-plugins/wordpress-plugin-readme-file-generator</link>
		<comments>http://wp-brasil.org/temas-e-plugins/wordpress-plugin-readme-file-generator#comments</comments>
		<pubDate>Tue, 31 Mar 2009 18:17:05 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Dicas e Tutoriais]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Temas e Plugins]]></category>
		<category><![CDATA[desenvolvimento de plugins]]></category>
		<category><![CDATA[readme file generator]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=579</guid>
		<description><![CDATA[Um dos aspectos mais importantes no desenvolvimento de plugins é ter um bom arquivo readme.txt.  Nome, descrição, tags, versões do WordPress compatíveis, instalação e FAQ são apenas alguns dos vários dados que podem ser adicionados, e todos eles contribuem um pouco para aumentar a qualidade do plugin desenvolvido, já que as buscas no repositório são [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos aspectos mais importantes no desenvolvimento de plugins é ter um bom arquivo <code>readme.txt</code>.  Nome, descrição, tags, versões do WordPress compatíveis, instalação e FAQ são apenas alguns dos vários dados que podem ser adicionados, e todos eles contribuem um pouco para aumentar a qualidade do plugin desenvolvido, já que as buscas no repositório são feitas, inclusive, por esses itens.</p>
<p>De acordo com <a href="http://www.prelovac.com/vladimir/">Vladmir Prelovac</a>, em seu texto <a href="http://mashable.com/2009/03/25/wordpress-plugin-developer-tips/">Top 10 Tips for WordPress Plugin Developers</a>, os usuários se interessam mais em fazer download de plugins com uma boa descrição, instruções de instalação e algumas telas que os mostrem funcionando. Além disso, Vladmir comenta que, em segundo plano, caso seu plugin se torne popular, você começará a receber inúmeros pedidos de suporte. Dessa forma, se o plugin possuir um <code>readme.txt</code> completo, as chances de você ser inundado por perguntas diminui consideravelmente. E foi pensando nisso que  <a href="http://sudarmuthu.com/">Sudar Muthu</a> disponibilizou o <a href="http://sudarmuthu.com/projects/wp-readme.php">WordPress Plugin Readme File Generator</a>.</p>
<div id="attachment_594" class="wp-caption alignnone" style="width: 472px"><img class="size-full wp-image-594" title="WordPress Plugin Readme File Generator" src="http://wp-brasil.org/wp-content/uploads/2009/03/wpprfg.gif" alt="WordPress Plugin Readme File Generator" width="462" height="440" /><p class="wp-caption-text">Os campos obrigatórios do formulário</p></div>
<p>O <a href="http://sudarmuthu.com/projects/wp-readme.php">WordPress Plugin Readme File Generator</a> nada mais é do que uma simples ferramenta que agiliza a produção desse arquivo. Utilizando o  <a href="http://wordpress.org/extend/plugins/about/readme.txt">padrão de escrita do WordPress</a>, a fim de que as informações entrem corretamente no repositório de plugins, o formulário desenvolvido por Muthu gera o arquivo <code>readme.txt</code> para o seu plugin, baseado nas informações que você fornece. Após a inclusão dos campos obrigatórios, é só gerar o arquivo, validar (ele usa o próprio <a href="http://wordpress.org/extend/plugins/about/validator/">validador do WordPress</a>), salvar o arquivo e pronto, seu <code>readme.txt</code> está criado.</p>
<p>Desenvolvedores, documentem seus plugins. Sério, não dói. A documentação básica aumenta a credibilidade e, principalmente, a qualidade da extensão desenvolvida. E simples idéias como essa de Sudar Muthu podem facilitar essa tarefa.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/temas-e-plugins/wordpress-plugin-readme-file-generator/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fazendo melhor uso dos sticky posts</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/fazendo-melhor-uso-dos-sticky-posts</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/fazendo-melhor-uso-dos-sticky-posts#comments</comments>
		<pubDate>Thu, 26 Mar 2009 17:15:08 +0000</pubDate>
		<dc:creator>Eduardo Zulian</dc:creator>
				<category><![CDATA[Dicas e Tutoriais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[intermediário]]></category>
		<category><![CDATA[sticky posts]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=456</guid>
		<description><![CDATA[Com os sticky posts, é possível fixar posts antigos acima da cadeia cronológica natural do blog. Veja algumas dicas para tirar melhor proveito dessa nova funcionalidade.]]></description>
			<content:encoded><![CDATA[<p>Com a chegada do WordPress 2.7, a plataforma mostrou algumas boas novidades. Como todo mundo já deve saber disso, dispensarei grandes apresentações. Bem, dentre tais novidades, a que chamou bastante atenção foi a chamada sticky posts/posts fixos, que nada mais são do que posts que você pode manter fixos na página inicial e, principalmente, no topo do seu blog/site, se assim quiser. Ainda acho que a funcionalidade é muito básica, mas tais considerações eu deixo para um próximo texto.  Por enquanto, a idéia é tentar detalhar um pouco as vantagens que a interessante novidade (não mais tão novidade, mas tudo bem) pode trazer para o seu site.</p>
<h4>Fixando o post</h4>
<p>Basta você criar um novo post ou editar um antigo e marcar a opção <em>Fixar este post na página inicial</em> no painel Publicar e pronto, seu post será o primeiro da lista. Caso deseje usar a funcionalidade para mais de um post, sem problemas. O WordPress jogará todos os posts marcados como sticky/fixo pro topo do seu site. Só atenção: a ordem dos posts respeitará a ordem que foi usada para marcá-los. O último post fixado vai ser sempre o primeiro da fila, independente da data dos outros. E que fique claro, os posts continuam na ordem cronológica. Se você desmarcar a opção de fixar o post, ele simplesmente não aparecerá mais no topo das postagens.</p>
<h4>Estilizando o post</h4>
<p>Como a <a href="http://wp-brasil.org/dicas-e-tutoriais/aplicando-estilos-aos-posts-com-a-funcao-post_class">Cátia já escreveu em seu texto sobre o post_class()</a>, o WordPress agora cria, através dessa função, várias classes para o post. E claro, era de se esperar que uma classe sticky fosse atribuída caso o post estivesse marcado assim. A minha estrutura ficou assim:</p>
<pre class="brush: html">&lt;div id=&quot;destaques&quot; class=&quot;post sticky hentry category-i&quot;&gt;</pre>
<p>Agora, é só declarar a classe sticky no seu arquivo CSS e estilizá-la como bem entender.</p>
<h4>A tag condicional is_sticky()</h4>
<p>Sendo redundante, a função <code>is_sticky()</code>, se usada dentro do <a href="http://codex.wordpress.org/The_Loop">The Loop</a>, vai retornar verdadeiro caso o post tenha sido marcado como sticky. É, simples assim.</p>
<pre class="brush: php">&lt;?php if (is_sticky()) echo &#039;Este é um sticky post&#039;; ?&gt;</pre>
<p>Caso você precise saber se tal post é um sticky, basta colocar a ID do post desejado como parâmetro da função:</p>
<pre class="brush: php">&lt;?php if (is_sticky(&#039;33&#039;)) echo &#039;Esse é um sticky post também&#039;; ?&gt;</pre>
<h4>Ignorando sticky posts</h4>
<p>Provavelmente você não vai querer que os posts fiquem fixos em todas as áreas do seu site, principalmente se você executa várias queries dentro do mesmo arquivo. Para ignorar os sticky posts e mantê-los na ordem cronológica, faça uso do parâmetro <code>caller_get_posts=1</code> dentro da query:</p>
<pre class="brush: php">&lt;?php query_posts(&#039;caller_get_posts=1&#039;); ?&gt;</pre>
<h4>Retirando ou mostrando apenas os sticky posts na query</h4>
<p>Não há muito o que explicar. Caso você não queira que a sua query mostre os posts marcados como sticky, faça:</p>
<pre class="brush: php">&lt;?php $sticky = get_option(&#039;sticky_posts&#039;) ; ?&gt;
&lt;?php query_posts(array(&#039;post__not_in&#039; =&gt; $sticky)); ?&gt;</pre>
<p>Agora, se a idéia e mostrar apenas aqueles posts marcados, use o parâmetro <code>post__in</code>:</p>
<pre class="brush: php">&lt;?php $sticky = get_option(&#039;sticky_posts&#039;) ; ?&gt;
&lt;?php query_posts(array(&#039;post__in&#039; =&gt; $sticky)); ?&gt;</pre>
<h4>Mostrando apenas um sticky post no topo da página</h4>
<p>Por padrão, o <code>query_posts()</code> traz todos os posts fixados para o topo. Se você quiser apenas um desses posts no topo, isso pode ser feito da seguinte maneira:</p>
<pre class="brush: php"> &lt;?php $sticky = get_option(&#039;sticky_posts&#039;); ?&gt;
&lt;?php query_posts(&#039;p=&#039; . $sticky[0]); ?&gt;</pre>
<p>Essa query é perfeita para blogs que possuam espaço para um post destaque. Porém, ela traz o primeiro post marcado como sticky (é, o primeiro de todos), o que não me parece uma solução muito interessante. Para que a query retorne o último post fixado, apenas adicione a função <code>array_reverse()</code> para que assim a primeira ocorrência seja, na verdade, o último sticky post.</p>
<pre class="brush: php">&lt;?php $sticky = get_option(&#039;sticky_posts&#039;); ?&gt;
&lt;?php $sticky = array_reverse($sticky); ?&gt;
&lt;?php query_posts(&#039;p=&#039; . $sticky[0]); ?&gt;</pre>
<p>E é isso. Resumidamente, estão aí todos (ou quase todos) os principais detalhes sobre sticky posts. É bem possível que este artigo não tenha mostrado nenhuma novidade perto de <a href="http://www.google.com/search?btnG=1&amp;q=sticky+posts+wordpress">outros já escritos</a>, mas ei, é mais uma referência. E sugestões, claro, são mais do que apreciadas.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/fazendo-melhor-uso-dos-sticky-posts/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>

