<?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>Bugz</title> <atom:link href="http://www.bugz.com.br/feed/" rel="self" type="application/rss+xml" /><link>http://www.bugz.com.br</link> <description>Consultoria Digital</description> <lastBuildDate>Mon, 14 May 2012 10:54:15 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>Carregando Imagens &#8211; Javascript</title><link>http://www.bugz.com.br/2012/05/carregando-imagens-javascript/</link> <comments>http://www.bugz.com.br/2012/05/carregando-imagens-javascript/#comments</comments> <pubDate>Sun, 13 May 2012 15:50:32 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Code Snippets]]></category> <category><![CDATA[Desenvolvimento]]></category> <category><![CDATA[Javascript]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[carregar]]></category> <category><![CDATA[imagens]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[jquery]]></category> <category><![CDATA[squencial]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=536</guid> <description><![CDATA[<p>Existem situações onde você precisa controlar o carregamento de imagens para que elas carreguem de forma sequencial, por exemplo em um carrosel, ou simplesmente, situações onde você quer indicar o quantas imagens já foram carregadas e faltam carregar. Isso é relativamente simples de fazer em Javascript, porém, programar isso sempre é chato e requer alguma [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p>Existem situações onde você precisa controlar o carregamento de imagens para que elas carreguem de forma sequencial, por exemplo em um carrosel, ou simplesmente, situações onde você quer indicar o quantas imagens já foram carregadas e faltam carregar. Isso é relativamente simples de fazer em Javascript, porém, programar isso sempre é chato e requer alguma preparação.<br
/> Fiz um pequeno script que usa o jQuery para facilitar um pouco este processo.<br
/> <span
id="more-536"></span><br
/> Vou separar isso em duas partes, a primeira é simplesmente o controle de carregamento das imagens de forma sequencial, o segundo colocando um contador de quantas imagens ainda faltam.</p><h3>Carregando imagens de forma sequencial</h3><p>Vamos carregar as imagens de dentro de uma DIV de forma sequencial:<br
/> Primeiro o código:<br/></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
16
17
18
19
20
21
22
23
24
25
</pre></td><td
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> toload <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> queueImages <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> counter<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span>id <span style="color: #339933;">+</span> <span style="color: #3366CC;">' img'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		counter<span style="color: #339933;">++;</span>
		toload.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>counter<span style="color: #339933;">,</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'src'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'src'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'/common/images/loader-30.gif'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'queueid'</span><span style="color: #339933;">,</span>counter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	toload.<span style="color: #660066;">reverse</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	queueLoad<span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> queueLoad <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>toload.<span style="color: #660066;">length</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> qitem <span style="color: #339933;">=</span> toload.<span style="color: #660066;">pop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			qid <span style="color: #339933;">=</span> qitem<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
			qsrc <span style="color: #339933;">=</span> qitem<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
			dimg <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Image<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		dimg.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> qsrc<span style="color: #339933;">;</span>
		dimg.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span>id<span style="color: #339933;">+</span><span style="color: #3366CC;">' img[queueid=&quot;'</span> <span style="color: #339933;">+</span> qid <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;]'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'src'</span><span style="color: #339933;">,</span>qsrc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			queueLoad<span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>OK, agora vamos explicar as funções criadas:</p><p>A primeira função <em>queueImages(id)</em> recebe um parametro que é o identificador de um elemento do DOM (um selector). Por exemplo, se temos uma DIV com ID <em>galeria</em>, nós chamariamos a função assim:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">queueImages<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#galeria'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>O script varre essa div, procurando por todas as imagens que estão contidas dentro dela.<br
/> Ele pega o src de cada uma das imagens e armazena em um array, substituindo os src por um loader genérico (linha 7) e cria um atributo chamado &#8220;queueid&#8221; para que possamos identificar a imagem posteriormente.</p><p>Uma vez substituidas todas as imagens pelo loader, invertemos o array (para que comecemos o carregamento pela primeira imagem) e chamamos a função <em>queueLoad()</em> (novamente passando o selector em questão).</p><p>A função <em>queueLoad()</em> verifica se temos uma fila para carregar, se tivermos, ele cria um novo objeto de imagem no documento. No onload deste objeto (quando a imagem terminou de carregar), novamente substituo o src, agora trocando o loader pela imagem que já foi baixada na maquina do usuário.</p><h3>Mostrando quantos itens já foram carregados</h3><p>Seguindo o mesmo princípio, podemos agora, com pequenas modificações no código acima, implementar um demonstrator de quantos itens precisam ser carregados e de quantos faltam.</p><p>Vamos ver um exemplo de código:</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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td
class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> toload <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	totalItens <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> queueImages <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> counter<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span>id <span style="color: #339933;">+</span> <span style="color: #3366CC;">' img'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		counter<span style="color: #339933;">++;</span>
		toload.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span>counter<span style="color: #339933;">,</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'src'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'src'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'/common/images/loader-30.gif'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'queueid'</span><span style="color: #339933;">,</span>counter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	toload.<span style="color: #660066;">reverse</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	totalItens <span style="color: #339933;">=</span> toload.<span style="color: #660066;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">// colocamos no display um total</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mostraCarregando'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;span&gt;0&lt;/span&gt;/&lt;span&gt;'</span> <span style="color: #339933;">+</span> totalItens <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/span&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	queueLoad<span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> queueLoad <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>toload.<span style="color: #660066;">length</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> qitem <span style="color: #339933;">=</span> toload.<span style="color: #660066;">pop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
			qid <span style="color: #339933;">=</span> qitem<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
			qsrc <span style="color: #339933;">=</span> qitem<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
			dimg <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Image<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		dimg.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> qsrc<span style="color: #339933;">;</span>
		dimg.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span>id<span style="color: #339933;">+</span><span style="color: #3366CC;">' img[queueid=&quot;'</span> <span style="color: #339933;">+</span> qid <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;]'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'src'</span><span style="color: #339933;">,</span>qsrc<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mostraCarregando'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;span&gt;'</span> <span style="color: #339933;">+</span> toload.<span style="color: #660066;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/span&gt;/&lt;span&gt;'</span> <span style="color: #339933;">+</span> totalItens <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/span&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			queueLoad<span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">// nao temos mais imagens, esconder o display</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mostraCarregando'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>Se você ver, com simples modificações no codigo, ja implementamos um loading.</p><p>Importante:</p><p>Essa função não deve ser rodada no document.ready, execute-a depois de inserir o jQuery.</p><p>Outra coisa&#8230; se você quiser fazer com todas as imagens do seu HTML, basta colocar o id como &#8216;body&#8217; assim:</p><div
class="wp_syntax"><div
class="code"><pre class="javascript" style="font-family:monospace;">queueImages<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'body'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2011/03/sprites/" title="Permanent link to Sprites">Sprites</a></li><li> <a
href="http://www.bugz.com.br/2010/03/flash-status-backendpro/" title="Permanent link to Flash Status BackEndPro">Flash Status BackEndPro</a></li><li> <a
href="http://www.bugz.com.br/2010/02/php-progress-bar/" title="Permanent link to PHP Progress bar">PHP Progress bar</a></li><li> <a
href="http://www.bugz.com.br/2011/03/cakephp-e-jscss-minify/" title="Permanent link to CakePHP e Js/CSS minify">CakePHP e Js/CSS minify</a></li><li> <a
href="http://www.bugz.com.br/2011/03/console-do-cake/" title="Permanent link to Console do Cake">Console do Cake</a></li><li> <a
href="http://www.bugz.com.br/2011/09/file_get_contents/" title="Permanent link to PHP &#8211; Alternativa para file_get_contents">PHP &#8211; Alternativa para file_get_contents</a></li><li> <a
href="http://www.bugz.com.br/2008/07/o-futuro-do-flash-e-c/" title="Permanent link to O Futuro do flash é C?">O Futuro do flash é C?</a></li><li> <a
href="http://www.bugz.com.br/2011/03/phonegap/" title="Permanent link to PhoneGap">PhoneGap</a></li><li> <a
href="http://www.bugz.com.br/2011/12/wordpress-e-shortcode-parte-ii/" title="Permanent link to WordPress e ShortCode &#8211; Parte II">WordPress e ShortCode &#8211; Parte II</a></li><li> <a
href="http://www.bugz.com.br/2011/12/ajax-no-wordpress/" title="Permanent link to Ajax no WordPress">Ajax no WordPress</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2012/05/carregando-imagens-javascript/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Substituindo texto em arquivos</title><link>http://www.bugz.com.br/2012/02/subtituindo-texto-em-arquivos/</link> <comments>http://www.bugz.com.br/2012/02/subtituindo-texto-em-arquivos/#comments</comments> <pubDate>Fri, 24 Feb 2012 14:51:49 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Artigos]]></category> <category><![CDATA[Desenvolvimento]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[arquivos]]></category> <category><![CDATA[bash]]></category> <category><![CDATA[grandes]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[recursivo]]></category> <category><![CDATA[sed]]></category> <category><![CDATA[substituir]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=519</guid> <description><![CDATA[<p>Desenvolver para sites é sempre divertido, porém, algumas coisas são um pouco complicadas quando não se conhece as ferramentas disponíveis. Quem não precisou fazer uma substituição em massa de textos em um site? Seja essa substituição em centenas de arquivos ou em um arquivo gigante&#8230; Muitas pessoas deve estar pensando &#8220;Eu faço isso com o [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p>Desenvolver para sites é sempre divertido, porém, algumas coisas são um pouco complicadas quando não se conhece as ferramentas disponíveis. Quem não precisou fazer uma substituição em massa de textos em um site?<br
/> Seja essa substituição em centenas de arquivos ou em um arquivo gigante&#8230;<br
/> <span
id="more-519"></span></p><p>Muitas pessoas deve estar pensando &#8220;Eu faço isso com o Notepad++&#8221; ou algo do genero&#8230;<br
/> OK, se você usa Windows, você provavelmente deve estar acostumado a fazer esse tipo de coisa via um software como este. <em>Find and replace in all files</em> pode ser uma mão na roda para o tipo de situação como trocar uma URL em 700 arquivos, não vou discordar, porém, como o <a
href="http://seujota.com.br" title="Seu Jota">JP</a> está devidamente linkado para poder comprovar&#8230; esses softwares pouco vão te ajudar quando você precisa fazer um find e repalce em um arquivo .sql de 1.4Gb&#8230;</p><p>E aí? O que você faz?</p><p>Bom sai GUI bonitinho, entra linha de commando&#8230;</p><p>Se você está num Windows da vida, instale um <a
href="http://www.cygwin.com/" title="CygWin">CygWin</a>, ou, se você for um dos poucos bons&#8230; abra um terminal do seu linux e arregace a mangas&#8230;</p><h2>SED &#8211; Seu melhor amigo</h2><p>O sed (<strong>s</strong>tream <strong>ed</strong>itor) é um programinha de linha de commando do linux que eu uso para fazer meus finds and replaces em arquivos grandes ou em multiplos arquivos&#8230; se você entende alguma coisa de Regular Expressions, então você vai amar de paixão o sed, caso contrário, você vai odiar cada um dos segundos por vir&#8230;</p><h3>Multiplos arquivos na pasta</h3><p>Vamos supor que você quer substituir &#8220;http://www.bugz.com.br&#8221; por &#8220;http://copia.bugz.com.br&#8221; dos arquivos do wordpress (eu fiz isso recentemente para poder rodar meu blog localmente para ajustar algumas coisas).<br
/> Eis as linhas de commando:</p><pre lang="bash" lines="1">
cd /var/www/bugz/wp-content/themes/bugz
sed "s/http\:\/\/www\.bugz\.com\.br/http\:\/\/copia\.bugz\.com\.br/g" *.php
cd /var/www/bugz/wp-content/themes/bugz/css
sed "s/http\:\/\/www\.bugz\.com\.br/http\:\/\/copia\.bugz\.com\.br/g" *.css
</pre><p>Vamos quebrar essas linhas por partes?<br
/> Linha 1 &#8211; Eu entro no meu diretório tema<br
/> Linha 2 &#8211; Primeiro chamamos o programa sed, <a
href="#explicaRegular">passando o parametro que é uma regular expression</a>, e finalmente passamos a mascara de arquivos *.php ou seja, todos os PHPs da pasta<br
/> Linha 3 &#8211; Mudo para a pasta css<br
/> Linha 4 &#8211; você ja deve entender o que eu estou fazendo aqui&#8230;</p><p><em>Obs: o sed não faz buscas recursivas, você precisa usar o find para isso&#8230; depois eu coloco um bashzinho para vocês aqui</em></p><h3>Um arquivo</h3><pre lang="bash" lines="1">
sed "s/http\:\/\/www\.bugz\.com\.br/http\:\/\/copia\.bugz\.com\.br/g" nome_do_arquivo.sql
</pre><p>Aqui temos algo bem auto explicativo se você entendeu o primeiro exemplo&#8230; Eu faço a mesma substituição em um único arquivo .sql.</p><p><a
name="explicaRegular"></a></p><h3>Um arquivo</h3><p>Bom, agora vem a parte mais difícil, entender essas tais regular expressions&#8230;</p><p>Vamos lá&#8230; nossa idéia é trocar: &#8220;http://www.bugz.com.br&#8221; por &#8220;http://copia.bugz.com.br&#8221;<br
/> Vamos começar mais simples, trocar azul por vermelho.</p><p>O comando conteria a seguinte expressão:</p><p><font
color="red">s</font>/<font
color="green">azul</font>/<font
color="blue">vermelho</font></p><p>ou seja:</p><p><font
color="red"><strong>s</strong>ubstituir</font>/<font
color="green">ESSA_PALAVRA</font>/<font
color="blue">POR_ESSA</font></p><p>Entendeu?<br
/> Simples né?</p><p>Agora para complicar o que acabou de ficar simples&#8230;.</p><p>Como as palavras em questão fazem parte de um regular expression, você precisa delimitar determinados tipos de caracteres como o &#8220;.&#8221; ou o &#8220;:&#8221; e o &#8220;/&#8221; usando uma barra invertida&#8230;</p><p>assim seu</p><p>http://www.bugz.com.br</p><p>tem esses caracteres especiais:<br
/> http<font
color="red">://</font>www<font
color="red">.</font>bugz<font
color="red">.</font>com<font
color="red">.</font>br<br
/> e precisa ser delimitados com a barra invertida assim:<br
/> http<font
color="blue">\</font><font
color="red">:</font><font
color="blue">\</font><font
color="red">/</font><font
color="blue">\</font><font
color="red">/</font>www<font
color="blue">\</font><font
color="red">.</font>bugz<font
color="blue">\</font><font
color="red">.</font>com<font
color="blue">\</font><font
color="red">.</font>br</p><p>Bom, se você quiser saber mais sobre o SED, <a
href="http://www.grymoire.com/Unix/Sed.html" title="Sed">basta ler aqui</a>&#8230;</p><p>Ahh ia me esquecendo&#8230; aqui está um bashzinho que facilita um pouco a vida para os recursivos&#8230;</p><p>Salve o arquivo em algum lugar de facil acesso e não se esqueça de dar um chmod +x nele&#8230;</p><p>Arquivo gbfr</p><pre lang="bash" lines="1">
#!/bin/bash
function helpme {
	echo "GBFR Quick Help"
	echo "USAGE:"
	echo "gbfr regexSearch regexReplace searchPath"
	exit
}
if test -z "$1" then
	helpme
else
	find $3 -type f -exec sed -i "s/$1/$2/g" {} +
fi
</pre><p>Assim você só precisa fazer:</p><p>/home/userName/gbfr trocar_esse_texto por_esse_texto /home/bugz/Documents</p><p>para trocar &#8220;trocar_esse_texto&#8221; por &#8220;por_esse_texto&#8221; em todas as pastas e subpastas do diretório &#8220;/home/bugz/Documents&#8221; por exemplo&#8230;</p><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2011/03/sprites/" title="Permanent link to Sprites">Sprites</a></li><li> <a
href="http://www.bugz.com.br/2011/12/ajax-no-wordpress/" title="Permanent link to Ajax no WordPress">Ajax no WordPress</a></li><li> <a
href="http://www.bugz.com.br/2011/04/grficos-e-afins-2/" title="Permanent link to Gr&aacute;ficos e afins">Gr&aacute;ficos e afins</a></li><li> <a
href="http://www.bugz.com.br/2012/02/microphp-manifesto/" title="Permanent link to MicroPhp Manifesto">MicroPhp Manifesto</a></li><li> <a
href="http://www.bugz.com.br/2010/02/smarty-ci/" title="Permanent link to Smarty &#038; CI">Smarty &#038; CI</a></li><li> <a
href="http://www.bugz.com.br/2008/06/flock/" title="Permanent link to Flock">Flock</a></li><li> <a
href="http://www.bugz.com.br/2008/06/gos-linux-easy-and-stable/" title="Permanent link to gOS linux &#8211; easy and stable">gOS linux &#8211; easy and stable</a></li><li> <a
href="http://www.bugz.com.br/2011/09/file_get_contents/" title="Permanent link to PHP &#8211; Alternativa para file_get_contents">PHP &#8211; Alternativa para file_get_contents</a></li><li> <a
href="http://www.bugz.com.br/2011/07/sql-pequenos-detalhes-fazem-a-diferenca/" title="Permanent link to SQL pequenos detalhes fazem a diferença">SQL pequenos detalhes fazem a diferença</a></li><li> <a
href="http://www.bugz.com.br/2008/07/o-futuro-do-flash-e-c/" title="Permanent link to O Futuro do flash é C?">O Futuro do flash é C?</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2012/02/subtituindo-texto-em-arquivos/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>MicroPhp Manifesto</title><link>http://www.bugz.com.br/2012/02/microphp-manifesto/</link> <comments>http://www.bugz.com.br/2012/02/microphp-manifesto/#comments</comments> <pubDate>Thu, 23 Feb 2012 19:39:19 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Artigos]]></category> <category><![CDATA[Desenvolvimento]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[manifesto]]></category> <category><![CDATA[micro]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[pognifesto]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=512</guid> <description><![CDATA[<p>Recentemente eu tenho ouvido falar sobre o manifesto Micro PHP. Se você não tem idéia do que é isso, você pode achar interessante ler o manifesto e o post que originou tudo isso. O manifesto foi reproduzido no site microphp.org. Em suma, ele diz que o PHP deveria ser simples. O site ainda traz alguns [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p>Recentemente eu tenho ouvido falar sobre o manifesto Micro PHP. Se você não tem idéia do que é isso, você pode achar interessante ler o manifesto e o post que originou tudo isso.<br
/> <span
id="more-512"></span><br
/> O manifesto foi reproduzido no site <a
href="http://microphp.org" title="MicroPHP">microphp.org</a>. Em suma, ele diz que o PHP deveria ser simples. O site ainda traz alguns links para ferramentas em PHP que podem ser úteis&#8230; entre elas temos coisas como o <a
href="http://textpress.shameerc.com/" title="TextPress">Textpress</a>(blog em php e flatfile) e o <a
href="http://gluephp.com/" title="GluePHP">GluePHP</a>(mapeia URLs para classes) entre os que eu conhecia.<br
/> O manifesto em si não agrega muito a sua vida&#8230; ele por si só, sem uma plausível explicação por trás, dita algumas regras interessantes e outras nem tão interessantes. Se você ler o <a
href="http://funkatron.com/posts/the-microphp-manifesto.html" title="Post Original">post original</a>, que também está devidamente creditado no site, você pode ter uma idéia melhor do raciocínio por trás do autor do manifesto.<br
/> Devo dizer que eu não concordo 100% com o que Ed Finkler (o autor) diz, que resumidamente é:<br
/> Frameworks agregam centenas de milhares de linhas de código ao seu projeto, abrindo brechas de segurança e performance que você não tem controle. Você inicia uma relação de dependência com o fornecedor do framework e precisa confiar no fato de que ele está fazendo um bom trabalho.<br
/> Ele parte do princípio de que ter menos código é sempre melhor.<br
/> Ele entra em alguns argumentos técnicos, mas nenhum louvável o suficiente para que eu possa me importar o bastante para mudar minha filosofia de programação.<br
/> Partindo do principio literal do que ele diz, se não fizessemos uso de frameworks ou nada deste tipo, melhorias implementadas no PHP5> nunca teriam sido colocadas em prática (tendo em vista que uma parte delas foi originada de conceitos desenvolvidos em frameworks e hoje são parte nativa da linguagem), ou se você preferir, Ruby jamais teria se tornado uma linguagem mainstream sem o uso de um framework como Rails, Merb ou Sinatra.<br
/> Em suma, acho que Ed tem pontos positivos&#8230; reutilização de código, minimizar os scripts para que eles resolvam pequenos problemas cada um e que todos juntos possam resovler um problema mais complexo e assim por diante. (Até onde eu me recorde, essa foi uma das primeiras coisas que eu aprendi quando desenvolvia softwares)<br
/> Acho que o lado meio Xiita dele de não abraçar os grandes frameworks pode ser útil para projetos de pequeno porte ou para protótipos simples&#8230;<br
/> Para projetos mais elaborados e complexos, não vejo mais a necessidade de inventar a roda novamente.<br
/> Por isso, decidi escrever meu próprio manifesto&#8230; o <a
href="http://www.bugz.com.br/pognifesto/" title="PogNifesto">PogNifesto</a></p><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2011/09/file_get_contents/" title="Permanent link to PHP &#8211; Alternativa para file_get_contents">PHP &#8211; Alternativa para file_get_contents</a></li><li> <a
href="http://www.bugz.com.br/2011/12/ajax-no-wordpress/" title="Permanent link to Ajax no WordPress">Ajax no WordPress</a></li><li> <a
href="http://www.bugz.com.br/2008/07/o-futuro-do-flash-e-c/" title="Permanent link to O Futuro do flash é C?">O Futuro do flash é C?</a></li><li> <a
href="http://www.bugz.com.br/2012/02/subtituindo-texto-em-arquivos/" title="Permanent link to Substituindo texto em arquivos">Substituindo texto em arquivos</a></li><li> <a
href="http://www.bugz.com.br/2011/03/sprites/" title="Permanent link to Sprites">Sprites</a></li><li> <a
href="http://www.bugz.com.br/2011/07/sql-pequenos-detalhes-fazem-a-diferenca/" title="Permanent link to SQL pequenos detalhes fazem a diferença">SQL pequenos detalhes fazem a diferença</a></li><li> <a
href="http://www.bugz.com.br/2011/04/grficos-e-afins-2/" title="Permanent link to Gr&aacute;ficos e afins">Gr&aacute;ficos e afins</a></li><li> <a
href="http://www.bugz.com.br/2011/03/cakephp-descomplicando-o-complicado/" title="Permanent link to CakePHP &#8211; Descomplicando o complicado">CakePHP &#8211; Descomplicando o complicado</a></li><li> <a
href="http://www.bugz.com.br/2010/02/twitter-sem-curl/" title="Permanent link to Twitter sem Curl">Twitter sem Curl</a></li><li> <a
href="http://www.bugz.com.br/2011/10/custom-fields-do-jeito-facil/" title="Permanent link to Custom Fields do WordPress do jeito fácil">Custom Fields do WordPress do jeito fácil</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2012/02/microphp-manifesto/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WordPress &#8211; economize alguns segundos</title><link>http://www.bugz.com.br/2012/02/wordpress-economize-alguns-segundos/</link> <comments>http://www.bugz.com.br/2012/02/wordpress-economize-alguns-segundos/#comments</comments> <pubDate>Sat, 18 Feb 2012 22:32:29 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Bobagens]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[dicas]]></category> <category><![CDATA[segundos]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=509</guid> <description><![CDATA[<p>Se você passa grande parte do seu tempo administrando seu blog, ou se simplesmente você acompanha as estatísticas e comentários do seu blog com alguma frequência, uma dica. Se você acessar diretamente a url da página ou fizer o bookmark dela no seu browser, você acessa os diretamente, sem ter que carregar o dashboard, clicar [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p>Se você passa grande parte do seu tempo administrando seu blog, ou se simplesmente você acompanha as estatísticas e comentários do seu blog com alguma frequência, uma dica.</p><p><span
id="more-509"></span></p><p>Se você acessar diretamente a url da página ou fizer o bookmark dela no seu browser, você acessa os diretamente, sem ter que carregar o dashboard, clicar e esperar carregar.<br
/> Eu mantenho uma pasta de bookmarks para todos os blogs que preciso administrar com as principais coisas que faço, como criar novo post, comentários, plugins e estatísticas.<br
/> Bobagem, eu sei, mas economiza alguns segundos.</p><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2011/12/wordpress-e-shortcode-parte-ii/" title="Permanent link to WordPress e ShortCode &#8211; Parte II">WordPress e ShortCode &#8211; Parte II</a></li><li> <a
href="http://www.bugz.com.br/2011/12/ajax-no-wordpress/" title="Permanent link to Ajax no WordPress">Ajax no WordPress</a></li><li> <a
href="http://www.bugz.com.br/2012/02/wordpress-respondendo-em-dois-enderecos/" title="Permanent link to WordPress respondendo em dois endereços">WordPress respondendo em dois endereços</a></li><li> <a
href="http://www.bugz.com.br/2011/07/sql-pequenos-detalhes-fazem-a-diferenca/" title="Permanent link to SQL pequenos detalhes fazem a diferença">SQL pequenos detalhes fazem a diferença</a></li><li> <a
href="http://www.bugz.com.br/2012/02/evernote-no-linux/" title="Permanent link to Evernote no Linux">Evernote no Linux</a></li><li> <a
href="http://www.bugz.com.br/2011/12/wordpress-e-shortcodes/" title="Permanent link to WordPress e Shortcodes">WordPress e Shortcodes</a></li><li> <a
href="http://www.bugz.com.br/2011/10/custom-fields-do-jeito-facil/" title="Permanent link to Custom Fields do WordPress do jeito fácil">Custom Fields do WordPress do jeito fácil</a></li><li> <a
href="http://www.bugz.com.br/2011/08/ordenando-por-mais-vistos/" title="Permanent link to Ordenando por mais vistos">Ordenando por mais vistos</a></li><li> <a
href="http://www.bugz.com.br/2012/05/carregando-imagens-javascript/" title="Permanent link to Carregando Imagens &#8211; Javascript">Carregando Imagens &#8211; Javascript</a></li><li> <a
href="http://www.bugz.com.br/2012/02/subtituindo-texto-em-arquivos/" title="Permanent link to Substituindo texto em arquivos">Substituindo texto em arquivos</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2012/02/wordpress-economize-alguns-segundos/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Evernote no Linux</title><link>http://www.bugz.com.br/2012/02/evernote-no-linux/</link> <comments>http://www.bugz.com.br/2012/02/evernote-no-linux/#comments</comments> <pubDate>Fri, 10 Feb 2012 15:40:15 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Bobagens]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[android]]></category> <category><![CDATA[clone]]></category> <category><![CDATA[Evernote]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[mac]]></category> <category><![CDATA[nixnote]]></category> <category><![CDATA[sincronismo]]></category> <category><![CDATA[software]]></category> <category><![CDATA[windows]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=505</guid> <description><![CDATA[<p>Evernote é um softwarezinho de celular que faz sincronismo de anotações&#8230; Não sei exatamente porque, mas eu acabei me acostumando com ele no Android e agora ele é o meu padrão. Depois de receber um Mac aqui no escritório para trabalhar (não tive muita escolha), eu acidentalmente descobri que existem softwares desktop para o Evernote [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p>Evernote é um softwarezinho de celular que faz sincronismo de anotações&#8230;<br
/> Não sei exatamente porque, mas eu acabei me acostumando com ele no Android e agora ele é o meu padrão.<br
/> <span
id="more-505"></span><br
/> Depois de receber um Mac aqui no escritório para trabalhar (não tive muita escolha), eu acidentalmente descobri que existem softwares desktop para o Evernote &#8211; Fiquei feliz a princípio, até descobrir que eles rodam somente no Mac ou Windows (minhas maquinas pessoais todas rodam Linux).<br
/> Frustrado, desencanei de procurar opções&#8230; até que hoje, acidentalmente, eu esbarrei em um post aleatório na web:<br
/> <a
href="http://www.droider.com.br/linux-2/evernote-ubuntu-sim-nevernote.html" target="_blank">http://www.droider.com.br/linux-2/evernote-ubuntu-sim-nevernote.html</a> que fala sobre um software que faze exatamente isso&#8230; NixNote é um clone do Evernote para linux!!</p><p>Estou usando ele no momento.. até agora ele tem funcionado bem. Vamos ver como ele se comporta.</p><p>Links:<br
/> Evernote<br
/> <a
href="http://www.evernote.com/">http://www.evernote.com/</a><br
/> Post Origem<br
/> <a
href="http://www.droider.com.br/linux-2/evernote-ubuntu-sim-nevernote.html">http://www.droider.com.br/linux-2/evernote-ubuntu-sim-nevernote.html</a><br
/> SourceForge NixNote<br
/> <a
href="http://sourceforge.net/projects/nevernote/files/Current/">http://sourceforge.net/projects/nevernote/files/Current/</a></p><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2011/12/android-app-para-o-ubuntu-one/" title="Permanent link to Android App para o Ubuntu One">Android App para o Ubuntu One</a></li><li> <a
href="http://www.bugz.com.br/2011/02/android-market/" title="Permanent link to Android Market">Android Market</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores/" title="Permanent link to Aplicativos Android&ndash;Os melhores">Aplicativos Android&ndash;Os melhores</a></li><li> <a
href="http://www.bugz.com.br/2011/12/camera-360-melhores-apps-para-android/" title="Permanent link to Camera 360 &#8211; Melhores Apps para android">Camera 360 &#8211; Melhores Apps para android</a></li><li> <a
href="http://www.bugz.com.br/2011/03/root-e-overclock-no-seu-android/" title="Permanent link to &ldquo;Root&rdquo; e Overclock no seu android">&ldquo;Root&rdquo; e Overclock no seu android</a></li><li> <a
href="http://www.bugz.com.br/2011/03/amazon-android-appstore/" title="Permanent link to Amazon Android AppStore">Amazon Android AppStore</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores-2/" title="Permanent link to Aplicativos Android&ndash;Os Melhores &#8211; aCar">Aplicativos Android&ndash;Os Melhores &#8211; aCar</a></li><li> <a
href="http://www.bugz.com.br/2011/03/aplicativos-androidos-melhoresxiia-live/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;Xiia Live">Aplicativos Android&ndash;Os melhores&ndash;Xiia Live</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhoressms-backup/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;SMS Backup">Aplicativos Android&ndash;Os melhores&ndash;SMS Backup</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhorestunein-radio/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;TuneIn Radio">Aplicativos Android&ndash;Os melhores&ndash;TuneIn Radio</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2012/02/evernote-no-linux/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WordPress respondendo em dois endereços</title><link>http://www.bugz.com.br/2012/02/wordpress-respondendo-em-dois-enderecos/</link> <comments>http://www.bugz.com.br/2012/02/wordpress-respondendo-em-dois-enderecos/#comments</comments> <pubDate>Sun, 05 Feb 2012 03:20:08 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Desenvolvimento]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[endereço]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=495</guid> <description><![CDATA[<p>Uma das coisas estranhas no WordPress que eu tive que pesquisar recentemente foi a criação de um site que respondesse por duas URLs de forma independente, porém, úncia. É, pois é&#8230; eu também não entendi nada. Eventualmente entendemos que ele queria que www.meublogfictício.com.br respondesse normalmente, e que se um usuário entrasse com o domínio www.meublogfictícioCopia.com.br [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p>Uma das coisas estranhas no WordPress que eu tive que pesquisar recentemente foi a criação de um site que respondesse por duas URLs de forma independente, porém, úncia.<br
/> <span
id="more-495"></span><br
/> É, pois é&#8230; eu também não entendi nada. Eventualmente entendemos que ele queria que<br
/> www.meublogfictício.com.br respondesse normalmente, e que se um usuário entrasse com o domínio www.meublogfictícioCopia.com.br que este funcionasse exatamente igual ao outro, sem redirects ou nada deste tipo.</p><p>O WordPress armazena suas URLs no banco&#8230; aí como procedemos?</p><p>A solução é mais simples do que parece:</p><p>Adicione isso logo no inicio do seu functions:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;">update_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'siteurl'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'http://'</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_HOST&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
update_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'http://'</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_HOST&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>Pronto, se você programou seu WP direitinho&#8230; tudo deveria funcionar.</p><p>Acabei dando de encontro com uma segunda opção, talvez melhor ainda que a sugerida.</p><p>Ao invés de atualizar as opções do blog (que força uma escrita no banco) tem uma opção mais simples:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'WP_HOME'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'http://'</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_HOST&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'WP_SITEURL'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'http://'</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_HOST&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>Espero ter ajudado algum mortal.</p><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2011/12/wordpress-e-shortcode-parte-ii/" title="Permanent link to WordPress e ShortCode &#8211; Parte II">WordPress e ShortCode &#8211; Parte II</a></li><li> <a
href="http://www.bugz.com.br/2011/12/ajax-no-wordpress/" title="Permanent link to Ajax no WordPress">Ajax no WordPress</a></li><li> <a
href="http://www.bugz.com.br/2011/07/sql-pequenos-detalhes-fazem-a-diferenca/" title="Permanent link to SQL pequenos detalhes fazem a diferença">SQL pequenos detalhes fazem a diferença</a></li><li> <a
href="http://www.bugz.com.br/2011/12/wordpress-e-shortcodes/" title="Permanent link to WordPress e Shortcodes">WordPress e Shortcodes</a></li><li> <a
href="http://www.bugz.com.br/2011/10/custom-fields-do-jeito-facil/" title="Permanent link to Custom Fields do WordPress do jeito fácil">Custom Fields do WordPress do jeito fácil</a></li><li> <a
href="http://www.bugz.com.br/2011/08/ordenando-por-mais-vistos/" title="Permanent link to Ordenando por mais vistos">Ordenando por mais vistos</a></li><li> <a
href="http://www.bugz.com.br/2011/09/file_get_contents/" title="Permanent link to PHP &#8211; Alternativa para file_get_contents">PHP &#8211; Alternativa para file_get_contents</a></li><li> <a
href="http://www.bugz.com.br/2011/03/cakephp-descomplicando-o-complicado/" title="Permanent link to CakePHP &#8211; Descomplicando o complicado">CakePHP &#8211; Descomplicando o complicado</a></li><li> <a
href="http://www.bugz.com.br/2012/02/wordpress-economize-alguns-segundos/" title="Permanent link to WordPress &#8211; economize alguns segundos">WordPress &#8211; economize alguns segundos</a></li><li> <a
href="http://www.bugz.com.br/2011/03/console-do-cake/" title="Permanent link to Console do Cake">Console do Cake</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2012/02/wordpress-respondendo-em-dois-enderecos/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Chrome 2 Phone &#8211; Android &amp; Web</title><link>http://www.bugz.com.br/2011/12/chrome-2-phone-android-web/</link> <comments>http://www.bugz.com.br/2011/12/chrome-2-phone-android-web/#comments</comments> <pubDate>Fri, 30 Dec 2011 13:43:33 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Hardware]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[android]]></category> <category><![CDATA[aplicativo]]></category> <category><![CDATA[celular]]></category> <category><![CDATA[Chrome]]></category> <category><![CDATA[phone]]></category> <category><![CDATA[web]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=472</guid> <description><![CDATA[<p>O Chrome 2 Phone tem um nome praticamente auto-explicativo. Quantas vezes você não estava sentado no seu computador, buscando alguma informação como endereços ou direções para ir algum lugar, quando se deparou com o fato de que você estava fazendo isso no computador e não no celular! Com o Chrome 2 Phone isso tudo se [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p><img
src="http://www.bugz.com.br/wp-content/uploads/2011/12/web2chrome1-100x100.jpg" alt="" title="web2chrome" width="100" height="100" class="alignleft size-thumbnail wp-image-475" style="padding:0 10px 0 0"/>O <a
href="https://chrome.google.com/webstore/detail/oadboiipflhobonjjffjbfekfjcgkhco" title="App Chrome 2 Phone">Chrome 2 Phone</a> tem um nome praticamente auto-explicativo. Quantas vezes você não estava sentado no seu computador, buscando alguma informação como endereços ou direções para ir algum lugar, quando se deparou com o fato de que você estava fazendo isso no computador e não no celular!<br/><br/><span
id="more-472"></span><br
/> Com o <a
href="https://chrome.google.com/webstore/detail/oadboiipflhobonjjffjbfekfjcgkhco" title="App Chrome 2 Phone">Chrome 2 Phone</a> isso tudo se resolve num clique de um botão, se você tiver o plugin instalado no seu chrome, no celular e de fato estiver usando o chrome. Bom o plugin é bem inteligente&#8230; clicar no botão quando estou num maps, ele abre o maps no meu celular. Clicar em um número de telefone, ele automaticamente já abre meu discador com o número selecionado. Tem muita coisa que você sempre desejou. Uma vez instalado é realmente tão simples quanto clicar um botão.</p><p>Veja aqui o vídeo explicativo:<br
/> <iframe
width="560" height="315" src="http://www.youtube.com/embed/pQb243niMlg?rel=0&amp;hd=1" frameborder="0" allowfullscreen></iframe></p><p>Vale a pena brincar.</p><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2011/02/android-market/" title="Permanent link to Android Market">Android Market</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores/" title="Permanent link to Aplicativos Android&ndash;Os melhores">Aplicativos Android&ndash;Os melhores</a></li><li> <a
href="http://www.bugz.com.br/2011/03/aplicativos-androidos-melhoresxiia-live/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;Xiia Live">Aplicativos Android&ndash;Os melhores&ndash;Xiia Live</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhorestunein-radio/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;TuneIn Radio">Aplicativos Android&ndash;Os melhores&ndash;TuneIn Radio</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores-2/" title="Permanent link to Aplicativos Android&ndash;Os Melhores &#8211; aCar">Aplicativos Android&ndash;Os Melhores &#8211; aCar</a></li><li> <a
href="http://www.bugz.com.br/2011/03/amazon-android-appstore/" title="Permanent link to Amazon Android AppStore">Amazon Android AppStore</a></li><li> <a
href="http://www.bugz.com.br/2011/12/android-app-para-o-ubuntu-one/" title="Permanent link to Android App para o Ubuntu One">Android App para o Ubuntu One</a></li><li> <a
href="http://www.bugz.com.br/2011/12/camera-360-melhores-apps-para-android/" title="Permanent link to Camera 360 &#8211; Melhores Apps para android">Camera 360 &#8211; Melhores Apps para android</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores-3/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;SkyFire">Aplicativos Android&ndash;Os melhores&ndash;SkyFire</a></li><li> <a
href="http://www.bugz.com.br/2011/03/root-e-overclock-no-seu-android/" title="Permanent link to &ldquo;Root&rdquo; e Overclock no seu android">&ldquo;Root&rdquo; e Overclock no seu android</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2011/12/chrome-2-phone-android-web/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Android App para o Ubuntu One</title><link>http://www.bugz.com.br/2011/12/android-app-para-o-ubuntu-one/</link> <comments>http://www.bugz.com.br/2011/12/android-app-para-o-ubuntu-one/#comments</comments> <pubDate>Thu, 29 Dec 2011 10:38:40 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[android]]></category> <category><![CDATA[aplicativo]]></category> <category><![CDATA[cloud]]></category> <category><![CDATA[fotos]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[one]]></category> <category><![CDATA[sincronismo]]></category> <category><![CDATA[ubuntu]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=466</guid> <description><![CDATA[<p>O Android agora tem um aplicativo que faz o sync com o Ubuntu One! O Ubuntu One é um serviço Cloud da Ubuntu que permite usuários armazenarem de graça até 5GB na web. Apenas mais um daqueles serviços no estilo de i-Cloud e tantos outros por aí&#8230; Como usuário do Ubuntu, eu acabei adotando esse [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p><img
src="http://www.bugz.com.br/wp-content/uploads/2011/12/ubuntu_one_app.png" alt="Ubuntu One App Logo" title="ubuntu_one_app" width="100" height="100" class="alignleft size-full wp-image-467" style="padding:0 10px 0 0"/>O Android agora tem um aplicativo que faz o sync com o Ubuntu One!<br
/> O <a
href="http://one.ubuntu.com" title="Ubuntu One">Ubuntu One</a> é um serviço Cloud da <a
href="http://ubuntu.com" title="Ubuntu Linux Operating System">Ubuntu</a> que permite usuários armazenarem de graça até 5GB na web. Apenas mais um daqueles serviços no estilo de i-Cloud e tantos outros por aí&#8230; Como usuário do <a
href="http://ubuntu.com" title="Ubuntu Linux Operating System">Ubuntu</a>, eu acabei adotando esse serviço para manter algumas coisas minhas na nuvem.<span
id="more-466"></span><br
/> O aplicativo roda em background no seu celular&#8230; monitorando qualquer coisa que você queira sincronizar (no meu caso, são as fotos que tiro). Ao tirar uma foto, o aplicativo verifica se estou no Wifi (configurável no app), e se eu por acaso estiver, ele envia as fotos tiradas para minha conta no <a
href="http://one.ubuntu.com" title="Ubuntu One">Ubuntu One</a>.<br
/> O legal disso tudo é que eu tenho um serviço similar no computador, que faz o sincronismo com minha conta do <a
href="http://one.ubuntu.com" title="Ubuntu One">Ubuntu One</a>, puxando os arquivos que eu seleciono, assim, mantenho minhas fotos de ceulular sempre atualizadas em meu note, nuvem e celular.</p><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2012/02/evernote-no-linux/" title="Permanent link to Evernote no Linux">Evernote no Linux</a></li><li> <a
href="http://www.bugz.com.br/2011/12/camera-360-melhores-apps-para-android/" title="Permanent link to Camera 360 &#8211; Melhores Apps para android">Camera 360 &#8211; Melhores Apps para android</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhorestunein-radio/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;TuneIn Radio">Aplicativos Android&ndash;Os melhores&ndash;TuneIn Radio</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores/" title="Permanent link to Aplicativos Android&ndash;Os melhores">Aplicativos Android&ndash;Os melhores</a></li><li> <a
href="http://www.bugz.com.br/2011/03/amazon-android-appstore/" title="Permanent link to Amazon Android AppStore">Amazon Android AppStore</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores-2/" title="Permanent link to Aplicativos Android&ndash;Os Melhores &#8211; aCar">Aplicativos Android&ndash;Os Melhores &#8211; aCar</a></li><li> <a
href="http://www.bugz.com.br/2011/03/root-e-overclock-no-seu-android/" title="Permanent link to &ldquo;Root&rdquo; e Overclock no seu android">&ldquo;Root&rdquo; e Overclock no seu android</a></li><li> <a
href="http://www.bugz.com.br/2011/03/aplicativos-androidos-melhoresxiia-live/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;Xiia Live">Aplicativos Android&ndash;Os melhores&ndash;Xiia Live</a></li><li> <a
href="http://www.bugz.com.br/2011/02/android-market/" title="Permanent link to Android Market">Android Market</a></li><li> <a
href="http://www.bugz.com.br/2011/12/chrome-2-phone-android-web/" title="Permanent link to Chrome 2 Phone &#8211; Android &#038; Web">Chrome 2 Phone &#8211; Android &#038; Web</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2011/12/android-app-para-o-ubuntu-one/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Camera 360 &#8211; Melhores Apps para android</title><link>http://www.bugz.com.br/2011/12/camera-360-melhores-apps-para-android/</link> <comments>http://www.bugz.com.br/2011/12/camera-360-melhores-apps-para-android/#comments</comments> <pubDate>Wed, 28 Dec 2011 21:44:05 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[android]]></category> <category><![CDATA[aplicativo]]></category> <category><![CDATA[camera]]></category> <category><![CDATA[download]]></category> <category><![CDATA[fotos]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=459</guid> <description><![CDATA[<p>Fazia algum tempo que eu nãoo escrevia sobre aplicativos Android. Na verdade, eu tenho usado pouco o meu celular como brinquedo e não tive muito tempo de ficar testando novos aplicativos. Uma das principais coisas que eu tenho usado meu celular é para tirar fotos, mais pelo fato de ele estar sempre por perto do [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p><img
src="http://www.bugz.com.br/wp-content/uploads/2011/12/camera360.jpg" alt="camera360 image" title="camera360 image" width="100" height="100" class="alignleft size-full wp-image-460" style="padding:0 10px 0 0; "/>Fazia algum tempo que eu nãoo escrevia sobre aplicativos Android. Na verdade, eu tenho usado pouco o meu celular como brinquedo e não tive muito tempo de ficar testando novos aplicativos.<br
/> Uma das principais coisas que eu tenho usado meu celular é para tirar fotos, mais pelo fato de ele estar sempre por perto do que pela qualidade das imagens.<span
id="more-459"></span><br
/> Agora que falei de qualidade de imagens, vamos falar do <a
href="htpp://market.android.com/details?id=vStudio.Android.Camera360">Camera 360</a>. Um dos principais problemas desses programas que fazem manipulação de fotos em celular é que eles geralmente trabalham com efeitos toscos, que não valorizam a foto. Claro que todos nós achamos engraçado ver uma foto ou outra de pessoas distorcidas, verdes ou colocadas dentro de um poster gigante, mas&#8230; isso passa. As vezes você da a sorte de tirar uma foto incrível, só que ela fica pra sempre com aquele efeito tosco e já era.<br
/> Esse é um dos diferenciais do Camera 360, ele tira uma cópia de segurança da sua foto original&#8230; assim, além da foto &#8220;retocada&#8221; você mantém a original.<br
/> A outra vantagem dele é bem simples&#8230; ele tem uns efeitos ótimos, que realmente realçam as fotos de forma bonita e profissional.<br
/> Vale o download.</p><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2011/12/android-app-para-o-ubuntu-one/" title="Permanent link to Android App para o Ubuntu One">Android App para o Ubuntu One</a></li><li> <a
href="http://www.bugz.com.br/2011/02/android-market/" title="Permanent link to Android Market">Android Market</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores/" title="Permanent link to Aplicativos Android&ndash;Os melhores">Aplicativos Android&ndash;Os melhores</a></li><li> <a
href="http://www.bugz.com.br/2011/03/amazon-android-appstore/" title="Permanent link to Amazon Android AppStore">Amazon Android AppStore</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhorestunein-radio/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;TuneIn Radio">Aplicativos Android&ndash;Os melhores&ndash;TuneIn Radio</a></li><li> <a
href="http://www.bugz.com.br/2011/03/aplicativos-androidos-melhoresxiia-live/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;Xiia Live">Aplicativos Android&ndash;Os melhores&ndash;Xiia Live</a></li><li> <a
href="http://www.bugz.com.br/2011/03/root-e-overclock-no-seu-android/" title="Permanent link to &ldquo;Root&rdquo; e Overclock no seu android">&ldquo;Root&rdquo; e Overclock no seu android</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores-2/" title="Permanent link to Aplicativos Android&ndash;Os Melhores &#8211; aCar">Aplicativos Android&ndash;Os Melhores &#8211; aCar</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhores-3/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;SkyFire">Aplicativos Android&ndash;Os melhores&ndash;SkyFire</a></li><li> <a
href="http://www.bugz.com.br/2011/02/aplicativos-androidos-melhoressms-backup/" title="Permanent link to Aplicativos Android&ndash;Os melhores&ndash;SMS Backup">Aplicativos Android&ndash;Os melhores&ndash;SMS Backup</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2011/12/camera-360-melhores-apps-para-android/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WordPress e ShortCode &#8211; Parte II</title><link>http://www.bugz.com.br/2011/12/wordpress-e-shortcode-parte-ii/</link> <comments>http://www.bugz.com.br/2011/12/wordpress-e-shortcode-parte-ii/#comments</comments> <pubDate>Tue, 20 Dec 2011 16:26:58 +0000</pubDate> <dc:creator>Greg</dc:creator> <category><![CDATA[Desenvolvimento]]></category> <category><![CDATA[Tecnologia]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[shortcodes]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://www.bugz.com.br/?p=454</guid> <description><![CDATA[<p>Dando continuidade ao post de ontem onde eu rapidamente expliquei algumas utilidades dos shortcodes no WordPress, eu queria entrar em maiores detalhes de como utilizar de forma correta essa ferramenta no WordPress. Vamos imaginar o seguinte: Você tem que disponibilizar um jeito simples de um usuário colocar um texto dentro de um padrão X no [...]</p><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></description> <content:encoded><![CDATA[<p>Dando continuidade ao <a
href="http://www.bugz.com.br/2011/12/wordpress-e-shortcodes/" title="Ver post">post</a> de ontem onde eu rapidamente expliquei algumas utilidades dos shortcodes no <a
href="http://wordpress.org" title="Wordpress site">WordPress</a>, eu queria entrar em maiores detalhes de como utilizar de forma correta essa ferramenta no <a
href="http://wordpress.org" title="Wordpress site">WordPress</a>.<span
id="more-454"></span><br
/> Vamos imaginar o seguinte:<br
/> Você tem que disponibilizar um jeito simples de um usuário colocar um texto dentro de um padrão X no meio do post, e você precisa também criar um botão personalizado para que o usuário possa adiciona-lo ao post em qualquer lugar.</p><p>Você precisaria gerar os seguintes códigos no post final:</p><pre lang="html" line="1" escaped="1">
&lt;!-- Texto em destaque -->
&lt;p class="textoEmDestaque">
&lt;span>Título do destaque&lt;/span>
Texto do post que está em destaque.
&lt;/p>
&lt;!-- Botão personalizado -->
&lt;a class="botaoMaisInfo" title="Clique para obter maiores informações">+ Informações&lt;/a>
</pre><p>Bom, com o tutorial de ontem, isso deve ser bem fácil para você fazer&#8230; criar as duas funções, os dois add_shortcode e boas&#8230;.</p><p>O conteúdo do post ficaria algo assim:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
</pre></td><td
class="code"><pre class="html" style="font-family:monospace;">bla bla bla
[destaque titulo=&quot;Meu texto em destaque&quot;]O texto do que aparece em destaque está aqui dentro[/destaque]
mais bla bla bla
[botaoInfo /]</pre></td></tr></table></div><p>Só pra refrescar a memória (ou para facilitar a vida dos que são preguiçosos demais para ver meu outro <a
href="http://www.bugz.com.br/2011/12/wordpress-e-shortcodes/" title="Ver post">post</a>), nosso PHP ficaria assim:</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> scTextoDestaque<span style="color: #009900;">&#40;</span><span style="color: #000088;">$params</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">extract</span><span style="color: #009900;">&#40;</span>shortcode_atts<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">'titulo'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'&lt;p class=&quot;textoEmDestaque&quot;&gt;&lt;span&gt;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$titulo</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/span&gt;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$content</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/p&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> scBotaoInfo<span style="color: #009900;">&#40;</span><span style="color: #000088;">$params</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'&lt;a class=&quot;botaoMaisInfo&quot; title=&quot;Clique para obter maiores informações&quot;&gt;+ Informações&lt;/a&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
add_shortcode<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'destaque'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'scTextoDestaque'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
add_shortcode<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'botaoInfo'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'scBotaoInfo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>Isso tudo funciona lindo e maravilhoso e você pode achar que seus problemas foram finalmente sanados&#8230; bom, é aí que entra a entidade chamada <strong>usuário</strong>.<br
/> Inevitavelmente eles vão tentar colocar um botão de +Info dentro do texto em destaque (embora você pode ter especificado que isso não deveria acontecer)&#8230; e aí? o que fazemos?</p><p>Estamos com um post assim:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td
class="code"><pre class="html" style="font-family:monospace;">bla bla bla
[destaque titulo=&quot;Meu texto em destaque&quot;]O texto do que aparece em
destaque está aqui dentro
[botaoInfo /]
[/destaque]
mais bla bla bla</pre></td></tr></table></div><p>Com isso, todo seu esforço de tentar fazer algo simples e intuitivo foi pro vinagre?<br
/> Bom, quase isso&#8230;</p><p>O WordPress tem uma funcionalidade que resolve esta questão:<br
/> Vamos usar a função <a
href="http://codex.wordpress.org/Function_Reference/do_shortcode" title="Function reference">do_shortcode()</a> do <a
href="http://wordpress.org" title="Wordpress site">WordPress</a>&#8230; vamos alterar nossas funções para resolver esta questão.<br
/> Nosso PHP ficaria no final assim:</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> scTextoDestaque<span style="color: #009900;">&#40;</span><span style="color: #000088;">$params</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">extract</span><span style="color: #009900;">&#40;</span>shortcode_atts<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">'titulo'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'&lt;p class=&quot;textoEmDestaque&quot;&gt;&lt;span&gt;'</span><span style="color: #339933;">.</span>do_shortcode<span style="color: #009900;">&#40;</span><span style="color: #000088;">$titulo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/span&gt;'</span><span style="color: #339933;">.</span>do_shortcode<span style="color: #009900;">&#40;</span><span style="color: #000088;">$content</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/p&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> scBotaoInfo<span style="color: #009900;">&#40;</span><span style="color: #000088;">$params</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'&lt;a class=&quot;botaoMaisInfo&quot; title=&quot;Clique para obter maiores informações&quot;&gt;+ Informações&lt;/a&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
add_shortcode<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'destaque'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'scTextoDestaque'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
add_shortcode<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'botaoInfo'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'scBotaoInfo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>Vamos analizar o que eu fiz?<br
/> Eu coloquei um <a
href="http://codex.wordpress.org/Function_Reference/do_shortcode" title="Function reference">do_shortcode()</a> em volta do $content e um em volta do $titulo (embora nunca deveríamos ter um shortcode dentro do título&#8230; eu já trabalho com usuários tempo o suficiente para imaginar que eles possam querer fazer isso).<br
/> Na função botaoInfo, vocês podem perceber que eu não fiz tratamento nenhum, tendo em vista que sempre retornamos um objeto estático.</p><p>Isso garante que o <a
href="http://wordpress.org" title="Wordpress site">WordPress</a> processe o shortcode dentro de um conteúdo originário de um outro shortcode.</p><p>Acho que isso finaliza minha explicação de shortcodes&#8230;.</p><div
class="betterrelated"><p><strong>Conteudo relacionado:</strong></p><ol><li> <a
href="http://www.bugz.com.br/2011/12/wordpress-e-shortcodes/" title="Permanent link to WordPress e Shortcodes">WordPress e Shortcodes</a></li><li> <a
href="http://www.bugz.com.br/2011/12/ajax-no-wordpress/" title="Permanent link to Ajax no WordPress">Ajax no WordPress</a></li><li> <a
href="http://www.bugz.com.br/2012/02/wordpress-respondendo-em-dois-enderecos/" title="Permanent link to WordPress respondendo em dois endereços">WordPress respondendo em dois endereços</a></li><li> <a
href="http://www.bugz.com.br/2011/10/custom-fields-do-jeito-facil/" title="Permanent link to Custom Fields do WordPress do jeito fácil">Custom Fields do WordPress do jeito fácil</a></li><li> <a
href="http://www.bugz.com.br/2011/07/sql-pequenos-detalhes-fazem-a-diferenca/" title="Permanent link to SQL pequenos detalhes fazem a diferença">SQL pequenos detalhes fazem a diferença</a></li><li> <a
href="http://www.bugz.com.br/2011/08/ordenando-por-mais-vistos/" title="Permanent link to Ordenando por mais vistos">Ordenando por mais vistos</a></li><li> <a
href="http://www.bugz.com.br/2011/03/cakephp-descomplicando-o-complicado/" title="Permanent link to CakePHP &#8211; Descomplicando o complicado">CakePHP &#8211; Descomplicando o complicado</a></li><li> <a
href="http://www.bugz.com.br/2011/03/console-do-cake/" title="Permanent link to Console do Cake">Console do Cake</a></li><li> <a
href="http://www.bugz.com.br/2012/05/carregando-imagens-javascript/" title="Permanent link to Carregando Imagens &#8211; Javascript">Carregando Imagens &#8211; Javascript</a></li><li> <a
href="http://www.bugz.com.br/2011/09/file_get_contents/" title="Permanent link to PHP &#8211; Alternativa para file_get_contents">PHP &#8211; Alternativa para file_get_contents</a></li></ol></div><p><a
href="http://www.bugz.com.br">Bugz</a></p>]]></content:encoded> <wfw:commentRss>http://www.bugz.com.br/2011/12/wordpress-e-shortcode-parte-ii/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
