<?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; Tutoriais</title>
	<atom:link href="http://wp-brasil.org/categoria/dicas-e-tutoriais/tutoriais/feed" rel="self" type="application/rss+xml" />
	<link>http://wp-brasil.org</link>
	<description>Site da Comunidade Brasileira de WordPress</description>
	<lastBuildDate>Sat, 28 Jan 2012 21:05:29 +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>Usando taxonomia e posts personalizados no WordPress 3.0</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/tutoriais/usando-taxonomia-e-posts-personalizados-no-wordpress-3-0</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/tutoriais/usando-taxonomia-e-posts-personalizados-no-wordpress-3-0#comments</comments>
		<pubDate>Sat, 23 Oct 2010 18:50:43 +0000</pubDate>
		<dc:creator>Marcelo Torres</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[wpbrasil]]></category>

		<guid isPermaLink="false">http://www.marcelotorresweb.com/?p=1055</guid>
		<description><![CDATA[Olá pessoal, faz tempo que não posto nada aqui no blog, porém venho com uma dica que provavelmente vai ajudar muita gente. Há muitos tutoriais sobre como registrar posts e [...]Usando taxonomia e posts personalizados no WordPress 3.0 is a post from...]]></description>
			<content:encoded><![CDATA[Olá pessoal, faz tempo que não posto nada aqui no blog, porém venho com uma dica que provavelmente vai ajudar muita gente. Há muitos tutoriais sobre como registrar posts e [...]<p><a href="http://www.marcelotorresweb.com/usando-taxonomia-e-posts-personalizados-no-wordpress-3-0/">Usando taxonomia e posts personalizados no WordPress 3.0</a> is a post from: <a href="http://www.marcelotorresweb.com">Marcelo Torres</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/tutoriais/usando-taxonomia-e-posts-personalizados-no-wordpress-3-0/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando Custom Post Types no WordPress 3</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/utilizando-custom-post-types-no-wordpress-3</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/utilizando-custom-post-types-no-wordpress-3#comments</comments>
		<pubDate>Sun, 12 Sep 2010 12:55:13 +0000</pubDate>
		<dc:creator>Ronaldo Bitencourt</dc:creator>
				<category><![CDATA[Dicas e Tutoriais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Custom Post Types]]></category>
		<category><![CDATA[Tipos de Posts Customizados]]></category>
		<category><![CDATA[wordpress 3.0]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=2010</guid>
		<description><![CDATA[O WordPress permite o armazenamento de diferentes tipos de conteúdo. Esses conteúdos são armazenados no banco de dados na tabela &#8220;wp_posts&#8221; e diferenciados pela coluna &#8220;post_type&#8221;. Nas versões anteriores a 3.0 do WordPress, já era possível a criação de Tipo de Posts Personalizados(Custom Post Types), porém a partir da versão 3.0 foram implementados novos métodos [...]]]></description>
			<content:encoded><![CDATA[<p>O <a title="Comunidade Brasileira de WordPress" href="http://wp-brasil.org">WordPress</a> permite o armazenamento de diferentes <strong>tipos de conteúdo</strong>. Esses conteúdos são armazenados no banco de dados na tabela &#8220;wp_posts&#8221; e diferenciados pela coluna &#8220;post_type&#8221;.</p>
<p>Nas versões anteriores a 3.0 do WordPress, já era possível a criação de <strong>Tipo de Posts Personalizados(Custom Post Types),</strong> porém a partir da versão 3.0 foram implementados novos métodos com a finalidade de facilitar e popularizar o uso dos <strong>tipos de posts</strong>, que na verdade são tipos de conteúdos personalizados.</p>
<h3>Tipos de posts padrões</h3>
<h4>Post</h4>
<p>Um &#8220;post&#8221; (no banco de dados &#8220;post&#8221;) é o principal tipo de conteúdo utilizado, os Posts normalmente são exibidos em um blog ordenados cronologicamente. E também são usados na publicação dos feeds.</p>
<h4>Páginas</h4>
<p>Uma &#8220;página&#8221; (no banco de dados &#8220;page&#8221;) é muito parecio com um post, porém não faz parte da mesma estrutura cronológica dos posts.  Veja algumas diferenças importantes entre Posts e Páginas:</p>
<ul>
<li> Páginas não são organizadas cronologicamente;</li>
<li> Páginas possuem uma estrutura de URL própria, podendo ser acessadas a partir da URL do site principal;</li>
<li> Páginas podem utilizar Modelos de Páginas especiais;</li>
<li> Páginas também podem ser organizadas dentro de uma estrutura hierárquica;</li>
</ul>
<h4>Anexo</h4>
<p>Um &#8220;anexo&#8221; (no banco de dados &#8220;attachment&#8221;) é um post especial que contém informações sobre arquivos enviados através do sistema de upload de mídia.</p>
<h4>Revisões</h4>
<p>A &#8220;revisão&#8221; (no banco de dados &#8220;revision&#8221;), é usada para armazenar um rascunho de todos os posts (posts) e páginas (pages) existentes.</p>
<h4>Menus de Navegação</h4>
<p>Um &#8220;menu de navegação&#8221;(no banco de dados &#8220;nav_menu&#8221;), é usado para armazenar todas as informações relacionadas aos menus de navegação, outra implementação que só está disponível a partir do WordPress 3.</p>
<p>Agora que já sabemos quais são os cinco tipos de posts padrão do WordPress, vamos ver como são criados novos tipos de posts personalizados.</p>
<h3>Tipos de Posts Personalizados</h3>
<p>Para adicionar um tipo personalizado no WordPress 3.0, é preciso usar a função <strong>register_post_type</strong>. Esta função permite que você defina o tipo de post e como ele se comporta dentro do WordPress.</p>
<h4>Registrando um tipo de post personalizado:</h4>
<pre class="brush: php">
add_action( &#039;init&#039;, &#039;create_post_type&#039; );
function create_post_type() {
register_post_type( &#039;noticias&#039;,
array(
&#039;labels&#039; =&gt; array(
&#039;name&#039; =&gt; __( &#039;Notícias&#039; ),
&#039;singular_name&#039; =&gt; __( &#039;Notícia&#039; )
),
&#039;public&#039; =&gt; true,
)
);
}
</pre>
<p>O código acima cria um tipo de post &#8220;noticias&#8221;, ou seja, toda vez que criado um post com este tipo, no banco de dados na tabela &#8220;wp_posts&#8221; na coluna &#8220;post_type&#8221; referente a este post, contará o valor &#8220;noticias&#8221;. A função register_post_type possui diversos parâmetros, no exemplo acima foram usados dois principais, o primeiro é o &#8220;labels&#8221;, que define o nome do novo tipo personalizado, o plural e o singular. O segundo é &#8220;public&#8221;, que é uma flag para mostrar o tipo de post na seção de administração do site, e para fazê-lo aparecer no site principal, se é adicionado nas <em>queries</em> ou não.</p>
<p>Você pode personalizar várias informações sobre o tipo personalizado, para saber mais sobre os outros parâmetros acesse a documentação da função <a href="http://codex.wordpress.org/Function_Reference/register_post_type">register_post_type</a>.</p>
<h3>Exibindo o conteúdo na interface do website</h3>
<p>Para fazer consultas específicas e trazer apenas posts do tipo personalizado que você deseja, você pode utilizar o parâmetro &#8220;post_type&#8221; em um objeto WP_Query sempre que precisar, por exemplo:</p>
<pre class="brush: php">
$loop = new WP_Query( array( &#039;post_type&#039; =&gt; &#039;noticias&#039;, &#039;posts_per_page&#039; =&gt; 10 ) );
while ( $loop-&gt;have_posts() ) : $loop-&gt;the_post();
echo &#039;&lt;h3&gt;&#039;;
the_title();
echo &#039;&lt;/h3&gt;&#039;;
echo &#039;&lt;div&gt;&#039;;
the_content();
echo &#039;&lt;/div&gt;&#039;;
endwhile;
</pre>
<p>O código acima mostrará os 10 últimos posts do tipo noticias inseridos no painel administrativo.</p>
<h3>Plugins para Custom Post Types</h3>
<ul>
<li> <a href="http://wordpress.org/extend/plugins/custom-post-type-ui/">Custom Post Types UI</a></li>
<li> <a href="http://www.wpeasyposttypes.com/demo">Easy Post Types</a></li>
<li> <a href="http://wordpress.org/extend/plugins/simple-custom-post-type-archives/>Simple Custom Post Type Archives</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/utilizando-custom-post-types-no-wordpress-3/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress rewrite rules</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/tutoriais/wordpress-rewrite-rules</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/tutoriais/wordpress-rewrite-rules#comments</comments>
		<pubDate>Wed, 08 Sep 2010 18:49:14 +0000</pubDate>
		<dc:creator>leogermani</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[wpbrasil]]></category>

		<guid isPermaLink="false">http://hacklab.com.br/?p=938</guid>
		<description><![CDATA[Algumas vezes, na construção de um site em WordPress, você pode precisar criar algum tipo de estrutura fora da hierarquia padrão do WordPress e seus arquivos de template. No WP 3.0 com os post types personalizados, isso se tornou uma necessidade ainda mais frequente. Você pode precisar, por exemplo, criar uma página com a listagens [...]]]></description>
			<content:encoded><![CDATA[<p>Algumas vezes, na construção de um site em WordPress, você pode precisar criar algum tipo de estrutura fora da hierarquia padrão do WordPress e seus arquivos de template. No WP 3.0 com os <a href="http://codex.wordpress.org/Custom_Post_Types">post types personalizados</a>, isso se tornou uma necessidade ainda mais frequente.</p>
<p>Você pode precisar, por exemplo, criar uma página com a listagens dos posts do tipo &#8216;livros&#8217; que você criou no seu código. </p>
<p>Este tutorial vai mostrar o funcionamento básico da classe <a href="http://codex.wordpress.org/Function_Reference/WP_Rewrite">WP_Rewrite()</a> do WordPress que te ajuda a criar URLs customizadas e usá-las para extrair informações (sem precisar usar ?variavel=valor) ou para redirecionar para um arquivo de template criado por você.<span id="more-938"></span></p>
<p>Existem outras maneiras de interagir com essa classe, e aqui vou mostrar apenas uma. Por isso é sempre bom dar uma olhada na <a href="http://codex.wordpress.org/Function_Reference/WP_Rewrite">documentção completa</a> depois.</p>
<p>Primeiro crie uma função que irá criar as suas regras e associe ela a um hook. Neste primeiro exemplo, vamos criar uma página de listagem para um custom post type.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> cria_minhas_regras<span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_rewrite</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000088;">$new_rules</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">&quot;livros$&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'index.php?meu_template=livros'</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$wp_rewrite</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rules</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$new_rules</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$wp_rewrite</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rules</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
add_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'generate_rewrite_rules'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'cria_minhas_regras'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>No código acima estou criando uma regra que diz que sempre que minha URL for &#8220;meusite/livros&#8221;, ele será direcionado para o index.php com uma variável meu_template setada com o valor &#8216;livros&#8217;. Note que este é o index.php da raíz do WordPress, e não do tema ativo.</p>
<p>As regras são definidas usando uma expressão regular. Se você não conhece expressões regulares, <a href="http://hacklab.com.br/2010/09/08/wordpress-rewrite-rules/pt.wikipedia.org/wiki/Express%C3%A3o_regular">vá atrás</a> pois são muito úteis. Vamos montar algumas regras mais complexas aqui só para termos de exemplo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> cria_minhas_regras<span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_rewrite</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$new_rules</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">&quot;livros$&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'index.php?meu_template=livros'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">&quot;livros/autor/([^/]+)$&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'index.php?meu_template=livros&amp;autor='</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$wp_rewrite</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">preg_index</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$wp_rewrite</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rules</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$new_rules</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$wp_rewrite</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rules</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Agora adicionamos uma regra nova. Se a URL vier meusite/livros/autor/qualquercoisa, o WordPress vai criar uma variável chamada autor e colocar essa &#8220;qualquercoisa&#8221; como seu valor.</p>
<p>Note que é preciso saber alguma coisa de expressões regulares, pois elas são a base da construção das regras. Explicar expressões regulares nesse artigo o deixaria muito extenso. Por isso, apenas para constar, vale dizer que essa expressão regular entre parênteses quer dizer: um grupo de um ou mais caracteres que não tenha o caractere &#8220;/&#8221;. Os parênteses servem para capturar e depois serem acessados pelo método preg_index() ali na frente. Se houver mais de uma captura na mesma expressão, basta ir passando os valores 2, 3, etc para este método.</p>
<p>Seguindo adiante, precisamos registrar essas variáveis que criamos nas variáveis públicas da classe WP_Query, para que possamos acessá-las através da função get_query_var().</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> registrar_query_vars<span style="color: #009900;">&#40;</span><span style="color: #000088;">$public_query_vars</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$public_query_vars</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;meu_template&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$public_query_vars</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;autor&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$public_query_vars</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'query_vars'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'registrar_query_vars'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Pronto. Agora você pode acessar esses valores no seu código, usando, por exemplo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$meu_template</span> <span style="color: #339933;">=</span> get_query_var<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'meu_template'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Em alguns casos, isso já vai ser suficiente, pois tudo o que você precisa é pegar algumas variáveis e aí no próprio arquivo functions do seu tema você se resolve. Mas você pode fazer também um redirecionamento para forçar o WordPress a usar um arquivo de template diferente do seu tema, que esteja fora da hierarquia do WordPress. Para isso, faça o seguinte:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> template_redirect_intercept<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// verifica a variável</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'meu_template'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'livros'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// se tiver o valor que queremos, usa o nosso template</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span> TEMPLATEPATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/tpl_livros.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span> TEMPLATEPATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/tpl_livros.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
add_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template_redirect'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'template_redirect_intercept'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>E é isso. Agora crie o arquivo tpl_livros.php no seu tema e seja feliz.</p>
<p><strong>Nota importantíssima:</strong> o hook &#8220;generate_rewrite_rules&#8221; onde colocamos nossa função para criar as novas regras é chamado quando você salva as configurações de Links Permanentes. É preciso que seus links permanentes estejam configurados para alguma coisa diferente da padrão e o módulo rewrite do apache esteja funcionando corretamente, com o arquivo .htaccess criado.</p>
<p><strong>Nota importantíssima 2:</strong> Cada vez que você mudar alguma coisa no código das suas regras, é preciso salvar novamente a configuração de Links Permanentes para atualizar as regras. Isso acontece porque o WordPress guarda essas regras no banco, e não adianta simplesmente gerá-las dinamicamente no código. Você pode contornar isso, chamando na mão a função &#8220;$wp_rewrite-&gt;flush_rules()&#8221;, mas não é uma boa idéia chamar essa função toda vez que o site é carregado, pois ela é meio pesada.</p>
<p><strong>Rewrite Rules rules!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/tutoriais/wordpress-rewrite-rules/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando o BuddyPress (vídeo-tutorial)</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/instalando-o-buddypress-video-tutorial</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/instalando-o-buddypress-video-tutorial#comments</comments>
		<pubDate>Thu, 29 Apr 2010 15:11:52 +0000</pubDate>
		<dc:creator>Beduino</dc:creator>
				<category><![CDATA[Dicas e Tutoriais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bbPress]]></category>
		<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[iniciante]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=1945</guid>
		<description><![CDATA[Veja como instalar o BuddyPress em seu site WordPress! 
[video-tutorial]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-152" title="tux-cuisinier_isb-tux" src="http://wp-brasil.org/wp-content/uploads/2009/03/tux-cuisinier_isb-tux-132x132.png" alt="" width="132" height="132" /><br />
Pois então &#8230; você já tem seu site com WordPress instalado, mas &#8230; você de fato quer montar é uma rede social. Isto é: um local onde os (futuros) membros de sua comunidade possam interagir de forma mais organizada e agradável.</p>
<p>Não apenas com posts e comentários, mas com grupos de discussão, fóruns e onde todos ainda utilizem o recurso de mensagens privadas. Hummm &#8230; algo como o Facebook ou o Orkut. &#8220;Mas não será muito complicado construir algo assim?&#8221;, pensa você. Fique tranquilo: BuddyPress é exatamente aquilo que você está procurando, e sua instalação é muito simples.</p>
<p>De fato originalmente só era possível usar o BuddyPress em instalações com WordPress MU. De algum tempo para cá não mais! <img src='http://wp-brasil.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Mas vamos deixar o blá-blá-blá e ir direto ao que interessa: aos vídeos. O pré-requisito é ter o WordPress já instalado, com a estrutura de links permanentes já atualizada. Somente. Vamos lá:</p>
<h3>Parte 1: Carregando os arquivos necessários e começando a instalação</h3>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="460" height="259" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11262541&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="460" height="259" src="http://vimeo.com/moogaloop.swf?clip_id=11262541&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/11262541">Instalando BuddyPress &#8211; Parte 1</a> por <a href="http://vimeo.com/user3095825">joao barroca</a> em <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Que tal colocar seu BuddyPress em português? E instalar seu fórum? Vamos lá &#8230;</p>
<h3>Parte 2: Configurando arquivos de linguagem, fórum e passeando pelas opções</h3>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="460" height="259" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11312135&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="460" height="259" src="http://vimeo.com/moogaloop.swf?clip_id=11312135&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/11312135">Instalando BuddyPress &#8211; Parte 2</a> por <a href="http://vimeo.com/user3095825">joao barroca</a> em <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Traduzindo para o português, instalando fórum e outras configurações</p>
<p><em>* os vídeos tem resolução HD. Amplie (clicando nas setinhas) para assistir com essa resolução</em></p>
<h3>Finalizando &#8230; uma pequena dica</h3>
<p>A grande maioria dos sites com BuddyPress acaba por optar por colocar o fluxo de atividades como página principal. Mas você pode construir outra página e configurar seu site para exibi-la. Mas não esqueça de apontar que página vai conter seus posts &#8211; sim você continua no WordPress! . Observe que a imagem abaixo mostra que, para o exemplo, crei uma página [Posts: Blogs] e fiz os ajustes nas configurações de leitura.</p>
<p><img class="aligncenter size-full wp-image-1956" title="posts_configbp" src="http://wp-brasil.org/wp-content/uploads/2010/04/posts_configbp.png" alt="" width="531" height="307" /></p>
<p>Abraços e Boa Sorte</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/instalando-o-buddypress-video-tutorial/feed</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Utilizando Proxy no WordPress e PHP</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/utilizando-proxy-no-wordpress-e-php</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/utilizando-proxy-no-wordpress-e-php#comments</comments>
		<pubDate>Thu, 22 Apr 2010 19:13:59 +0000</pubDate>
		<dc:creator>Cátia Kitahara</dc:creator>
				<category><![CDATA[Dicas e Tutoriais]]></category>
		<category><![CDATA[Tutoriais]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=1937</guid>
		<description><![CDATA[O Hugo Cisneiros acabou de publicar um tutorial sobre a utilização de Proxy no WordPress e PHP. Segundo ele: Todo mundo conhece o tal Proxy. Quer queira quer não, na maioria das vezes as empresas utilizam um proxy como intermediador entre seus usuários e a Internet em geral. Enquanto o firewall bloqueia todo o acesso [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://www.devin.com.br/sobre/">Hugo Cisneiros</a> acabou de publicar um tutorial sobre a utilização de Proxy no WordPress e PHP. Segundo ele:</p>
<blockquote><p>Todo mundo conhece o tal Proxy. Quer queira quer não, na maioria das vezes as empresas utilizam um proxy como intermediador entre seus usuários e a Internet em geral. Enquanto o firewall bloqueia todo o  acesso externo, deixa apenas essa brecha para os clientes conectarem no  Proxy, então este controla tudo o que entra e sai pela Web.</p></blockquote>
<p>Continue lendo <a href="http://www.devin.com.br/proxy-no-wordpress/">o tutorial</a> no site do Hugo, o <a href="http://www.devin.com.br">Devin</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/utilizando-proxy-no-wordpress-e-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Múltiplos bancos de dados no WordPress (RW Splitting)</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/multiplos-bancos-de-dados-no-wordpress-rw-splitting</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/multiplos-bancos-de-dados-no-wordpress-rw-splitting#comments</comments>
		<pubDate>Tue, 22 Dec 2009 19:46:36 +0000</pubDate>
		<dc:creator>Cátia Kitahara</dc:creator>
				<category><![CDATA[Dicas e Tutoriais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[rw splitting]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/?p=1646</guid>
		<description><![CDATA[O Hugo Cisneiros escreveu há alguns dias um tutorial para quem precisa usar o WordPress com mais de um banco de dados. Segundo ele: Houve um certo trabalho em que participei, onde foi necessário instalar um WordPress-MU de alta disponibilidade, que utilizava além de dois servidores Web, dois servidores de banco de dados. Neste cenário, [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://www.devin.com.br/sobre/">Hugo Cisneiros</a> escreveu há alguns dias um tutorial para quem precisa usar o WordPress com mais de um banco de dados. Segundo ele:</p>
<blockquote><p>Houve um certo trabalho em que participei, onde foi necessário instalar um <a href="http://mu.wordpress.org/">WordPress-MU</a> de alta disponibilidade, que utilizava além de dois servidores Web, dois servidores de banco de dados. Neste cenário, os arquivos do servidor Web estavam sempre replicados nas duas máquinas, e os bancos de dados também tinham seus dados sempre nas duas máquinas. Com os dados sempre replicados em várias máquinas, tivemos que customizar o WordPress para entender isso.</p></blockquote>
<p>Continue lendo <a href="http://www.devin.com.br/multiplos-bancos-de-dados-no-wordpress/">o tutorial</a> no site do Hugo, o <a href="http://www.devin.com.br">Devin</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/multiplos-bancos-de-dados-no-wordpress-rw-splitting/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Instalando o WordPress (vídeo-tutorial)</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/instalando-o-wordpress</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/instalando-o-wordpress#comments</comments>
		<pubDate>Wed, 08 Apr 2009 14:54:29 +0000</pubDate>
		<dc:creator>Beduino</dc:creator>
				<category><![CDATA[Dicas e Tutoriais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[iniciante]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/novo/?p=139</guid>
		<description><![CDATA[O primeiro passo é o básico: procurar um bom serviço de hospedagem, recomendamos um servidor Linux, com php5 e versões novas do MySQL (os requisitos mínimos são php 4.3 e MySql 4.0). O que você vai ver nos vídeos a seguir foi feito em um servidor com o software chamado cPanel (software de gerenciamento de [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-149" title="tux-paper_overlord59-tux" src="http://wp-brasil.org/wp-content/uploads/2009/03/tux-paper_overlord59-tux-88x88.png" alt="tux-paper_overlord59-tux" width="88" height="88" />O primeiro passo é o básico: procurar um bom serviço de hospedagem, recomendamos um servidor Linux, com php5 e versões novas do MySQL (os requisitos mínimos são php 4.3 e MySql 4.0). O que você vai ver nos vídeos a seguir foi feito em um servidor com o software chamado cPanel (software de gerenciamento de contas). Não é essencial, mas facilitará muito sua vida. O importante é que você tenha acesso suficiente para criar seu banco de dados e seu usuário, alterar os privilégios do usuário e, se possível, ao phpMyadmin.</p>
<h4>Como criar o banco de dados com o cPanel</h4>
<p>Bom, você já tem tudo isso e seu espaço lá no servidor está vazio, pronto para começar. Neste primeiro vídeo, procuramos nos colocar na mesma situação que você: tem o domínio e tem os acessos. O que fazer agora? Então, assista ao vídeo:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="460" height="345" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="flashVars" value="s=ZT0xJmk9NDgyODMyNzA3Jms9N3pGTFYmYT03NDgyMzkzX2tTemdTJnU9YmFycm9jYQ==" /><param name="src" value="http://cdn.smugmug.com/ria/ShizVidz-2008120101.swf" /><param name="flashvars" value="s=ZT0xJmk9NDgyODMyNzA3Jms9N3pGTFYmYT03NDgyMzkzX2tTemdTJnU9YmFycm9jYQ==" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="460" height="345" src="http://cdn.smugmug.com/ria/ShizVidz-2008120101.swf" flashvars="s=ZT0xJmk9NDgyODMyNzA3Jms9N3pGTFYmYT03NDgyMzkzX2tTemdTJnU9YmFycm9jYQ==" allowfullscreen="true"></embed></object><br />
<a title="parte I" href="http://barroca.smugmug.com/gallery/7482393_kSzgS/1/#482832707_7zFLV-A-LB" target="_blank"></a></p>
<h4>Preparando a refeição &#8230; ops! Preparando e instalando o WP no seu site !</h4>
<p><img title="tux-cuisinier_isb-tux" src="http://wp-brasil.org/wp-content/uploads/2009/03/tux-cuisinier_isb-tux-88x88.png" alt="tux-cuisinier_isb-tux" />Então vamos à segunda parte da instalação. Para começar &#8211; e como já vi esse erro inúmeras vezes &#8211; voltamos a falar da criação de senha para usuários de banco de dados. O melhor é deixar o sistema gerar uma senha beeeeem complicada e utilizá-la. Salve a senha no seu computador &#8211; <strong>não na web</strong> &#8211; em um arquivo a que somente você tenha acesso. Na sequência, mostramos:</p>
<ul>
<li>como fazer o download do WP;</li>
<li>como fazer o upload para seu domínio com o <a title="Filezilla" href="http://filezilla-project.org/download.php?type=client" target="_blank">Filezilla</a>;</li>
<li>como editar o arquivo de configuração do WP, o wp-config-sample.php.</li>
</ul>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="460" height="345" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="flashVars" value="s=ZT0xJmk9NDgzMDI2NDAxJms9OFVBZzMmYT03NDgyMzkzX2tTemdTJnU9YmFycm9jYQ==" /><param name="src" value="http://cdn.smugmug.com/ria/ShizVidz-2008120101.swf" /><param name="flashvars" value="s=ZT0xJmk9NDgzMDI2NDAxJms9OFVBZzMmYT03NDgyMzkzX2tTemdTJnU9YmFycm9jYQ==" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="460" height="345" src="http://cdn.smugmug.com/ria/ShizVidz-2008120101.swf" flashvars="s=ZT0xJmk9NDgzMDI2NDAxJms9OFVBZzMmYT03NDgyMzkzX2tTemdTJnU9YmFycm9jYQ==" allowfullscreen="true"></embed></object></p>
<h4>Entrando na Matrix&#8230; quer dizer no WordPress!</h4>
<p><img class="alignleft size-thumbnail wp-image-155" title="tux-matrix_overlord59-tux" src="http://wp-brasil.org/wp-content/uploads/2009/03/tux-matrix_overlord59-tux-88x88.png" alt="tux-matrix_overlord59-tux" width="88" height="88" />Você está prestes a terminar. Neste terceiro &#8211; e mais curto &#8211; vídeo encerramos a instalação propriamente dita.</p>
<p>Vamos ao vídeo:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="460" height="345" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="flashVars" value="s=ZT0xJmk9NDgyODU0MTI5Jms9UUdVUkcmYT03NDgyMzkzX2tTemdTJnU9YmFycm9jYQ==" /><param name="src" value="http://cdn.smugmug.com/ria/ShizVidz-2008120101.swf" /><param name="flashvars" value="s=ZT0xJmk9NDgyODU0MTI5Jms9UUdVUkcmYT03NDgyMzkzX2tTemdTJnU9YmFycm9jYQ==" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="460" height="345" src="http://cdn.smugmug.com/ria/ShizVidz-2008120101.swf" flashvars="s=ZT0xJmk9NDgyODU0MTI5Jms9UUdVUkcmYT03NDgyMzkzX2tTemdTJnU9YmFycm9jYQ==" allowfullscreen="true"></embed></object></p>
<p>No futuro, alguns outros vídeos de como operar nosso já instalado WordPress.</p>
<p><em>*Deixe seu comentário para que possamos melhorar os vídeos ok?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/instalando-o-wordpress/feed</wfw:commentRss>
		<slash:comments>70</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>
		<item>
		<title>Como chamar arquivos css ou js no seu tema ou plugin</title>
		<link>http://wp-brasil.org/dicas-e-tutoriais/como-chamar-arquivos-css-ou-js-no-seu-tema-ou-plugin</link>
		<comments>http://wp-brasil.org/dicas-e-tutoriais/como-chamar-arquivos-css-ou-js-no-seu-tema-ou-plugin#comments</comments>
		<pubDate>Thu, 19 Feb 2009 18:43:51 +0000</pubDate>
		<dc:creator>Leo Germani</dc:creator>
				<category><![CDATA[Dicas e Tutoriais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[avançado]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://wp-brasil.org/novo/?p=58</guid>
		<description><![CDATA[Muitas vezes, quando fazemos um tema ou um plugin, precisamos carregar folhas de estilo ou arquivos javascript adicionais. Neste post, vou mostrar a maneira mais legal, charmosa e elegante de se fazer isso. Estrutura básica Antes de mais nada, vamos criar a função que vai carregar nosso javascript e adicioná-la ao hook correto do WordPress: [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_572" class="wp-caption alignnone" style="width: 264px"><a href="http://wp-brasil.org/wp-content/uploads/2009/02/chamando_javascript.png"><img class="size-full wp-image-572" title="chamando_javascript" src="http://wp-brasil.org/wp-content/uploads/2009/02/chamando_javascript.png" alt="Ilustração por Cátia Kitahara" width="254" height="380" /></a><p class="wp-caption-text">Ilustração por Cátia Kitahara</p></div>
<p>Muitas vezes, quando fazemos um tema ou um plugin, precisamos carregar folhas de estilo ou arquivos javascript adicionais. Neste post, vou mostrar a maneira mais legal, charmosa e elegante de se fazer isso.</p>
<h4 class="no-clear">Estrutura básica</h4>
<p>Antes de mais nada, vamos criar a função que vai carregar nosso javascript e adicioná-la ao hook correto do WordPress:</p>
<pre class="brush: php">
function meuPlugin_addJS() {
// aqui vou carregar meu javascript
}

add_action(&#039;wp_print_scripts&#039;, &#039;meuPlugin_addJS&#039;);
</pre>
<p>Agora, sempre que o WordPress imprimir as chamadas a arquivos javascript, vai rodar a sua função. Vamos ver como isso vai funcionar.</p>
<h4>Usando a função wp_enqueue_script</h4>
<p>A função &#8220;wp_enqueue_script()&#8221; serve para colocar o script em uma fila de carregamento. Ela é extremamente útil para evitar que um script seja carregado mais de uma vez e também para carregar todas as dependências na ordem certa. Vamos ver um exemplo que usa todos os parâmetros desta função:</p>
<pre class="brush: php">
wp_enqueue_script(&#039;meu_script&#039;, &#039;http://meusite.com/wp-content/plugins/meuplugin/script.js&#039;, array(&#039;jquery&#039;), &#039;1.0&#039;);
</pre>
<p>Esta função está colocando o seu script na fila para ser carregado, dizendo o seguinte</p>
<ul>
<li>ele se chama &#8216;meu_script&#8217;</li>
<li>ele está em http://meusite.com/wp-content/plugins/meuplugin/script.js</li>
<li>ele depende do jquery</li>
<li>esta é a versão 1.0 do &#8216;meu_script&#8217;</li>
</ul>
<p>Você só precisa passar tantos parâmetros quando se trata de um script que o WordPress não conhece. Para carregar o jQuery, por exemplo, você pode simplesmente especificar:</p>
<pre class="brush: php">
wp_enqueue_script(&#039;jquery&#039;);
</pre>
<p>Note que &#8216;jquery&#8217; é apenas um &#8220;nome fantasia&#8221; para o script. Para saber quais são todos os scripts disponíveis por padrão no WordPress, dê uma olhada na <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script">documentação completa da função wp_enqueue_script()</a>.</p>
<h4>Deixando seu caminho flexível</h4>
<p>Para encerrar este post, só falta esclarecer um ponto: não é bonito colocar o caminho para seu arquivo assim na mão, como fizemos no exemplo acima. Isso pode trazer vários problemas, porque, a partir do WordPress 2.6, é possível trocar o diretório &#8216;wp-content&#8217; de lugar. Seu plugin ou tema não vai funcionar corretamente em uma instalação em que alguém tenha movido este diretório. Além disso, não é raro as pessoas trocarem o nome da pasta do plugin, o que também quebraria o seu esquema.</p>
<p>Para contornar esse problema e deixar o seu código universal, vamos usar a constante WP_CONTENT_URL, que guarda o caminho da pasta wp-content, onde quer que ela esteja.</p>
<p>Vamos ver como ficaria nosso script completo:</p>
<pre class="brush: php">
function meuPlugin_addJS() {
$meuPluginURL = WP_CONTENT_URL.&#039;/plugins/&#039;.plugin_basename( dirname(__FILE__)).&#039;/&#039;;
wp_enqueue_script(&#039;meuJs&#039;, $meuPluginURL . &#039;meuJS.js&#039;);
}

add_action(&#039;wp_print_scripts&#039;, &#039;meuPlugin_addJS&#039;);
</pre>
<p>Note que, se meu plugin não depende de ninguém, não preciso passar os dois últimos parâmetros.</p>
<p><strong>Importante:</strong> A constante WP_CONTENT_URL só foi introduzida no WordPress 2.6, portanto, se você quiser que seu plugin ou tema funcione em versões anteriores a esta, adicione uma linha para criar a constante, caso ainda não exista:</p>
<pre class="brush: php">
if ( !defined(&#039;WP_CONTENT_URL&#039;) )
define( &#039;WP_CONTENT_URL&#039;, get_option(&#039;siteurl&#039;) . &#039;/wp-content&#039;);
</pre>
<h4>Mas e nos temas?</h4>
<p>Nos temas, você pode fazer assim:</p>
<pre class="brush: php">
// para garantir compatibilidade com versões anteriores ao WordPress 2.6
if ( !defined(&#039;WP_CONTENT_URL&#039;) )
define( &#039;WP_CONTENT_URL&#039;, get_option(&#039;siteurl&#039;) . &#039;/wp-content&#039;);

function meuTema_addJS() {
wp_enqueue_script(&#039;meuJs&#039;, WP_CONTENT_URL.&#039;/themes/meuTema/&#039; . &#039;meuJS.js&#039;);
}

function meuTema_addCSS() {
echo &#039;&lt;link rel=&quot;stylesheet&quot; href=&quot;&#039; . WP_CONTENT_URL . &#039;/themes/meuTema/meuCSS.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;&#039;;
}

add_action(&#039;wp_print_scripts&#039;, &#039;meuPlugin_addJS&#039;);
add_action(&#039;wp_head&#039;, &#039;meuTema_addCSS&#039;);
</pre>
<h4>Próximos passos</h4>
<p>Seu próximo passo é garantir que esses arquivos externos sejam carregados apenas quando realmente forem usados, para não sobrecarregar o site à toa. Existem várias maneiras de fazer isso, usando hooks específicos ou condições, mas é tema para outro post.</p>
<p>Abraços,</p>
<p>Leo</p>
]]></content:encoded>
			<wfw:commentRss>http://wp-brasil.org/dicas-e-tutoriais/como-chamar-arquivos-css-ou-js-no-seu-tema-ou-plugin/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

