<?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>Marcelo Mesquita</title>
	<atom:link href="http://marcelomesquita.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://marcelomesquita.com</link>
	<description>Desenvolvedor Web</description>
	<lastBuildDate>Wed, 04 Jan 2012 16:56:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Plugin: MM Chat</title>
		<link>http://marcelomesquita.com/plugin-mm-chat/</link>
		<comments>http://marcelomesquita.com/plugin-mm-chat/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 14:09:27 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[bate-papo]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.marcelomesquita.com/?p=277</guid>
		<description><![CDATA[Share/BookmarkA algum tempo atrás trabalhei num plugin para chat que acabou nem sendo colocado em funcionamento. Para não haver desperdício, resolvi disponibilizá-lo para download, caso exista algum interessado. Instalação Faça o upload do plugin &#8216;mm-chat&#8217; para o diretório &#8216;/wp-content/plugins/&#8217; do &#8230; <a href="http://marcelomesquita.com/plugin-mm-chat/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;count=none&amp;text=Plugin%3A%20MM%20Chat" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;count=none&amp;text=Plugin%3A%20MM%20Chat" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&#038;title=Plugin%3A%20MM%20Chat" id="wpa2a_6">Share/Bookmark</a></p><p>A algum tempo atrás trabalhei num plugin para chat que acabou nem sendo colocado em funcionamento. Para não haver desperdício, resolvi disponibilizá-lo para download, caso exista algum interessado.</p>
<h3>Instalação</h3>
<ol>
<li>Faça o upload do plugin &#8216;mm-chat&#8217; para o diretório &#8216;/wp-content/plugins/&#8217; do WordPress;</li>
<li>Ative o plugin;</li>
<li>Arraste o widget &#8216;Chat&#8217; para qualquer sidebar</li>
</ol>
<h3>Configuração</h3>
<p><a  href="http://marcelomesquita.com/wp-content/uploads/2011/10/chat-setup.png" class="thickbox no_icon" rel="gallery-277" title="chat-setup"><img class="alignright size-medium wp-image-279" title="chat-setup" src="http://marcelomesquita.com/wp-content/uploads/2011/10/chat-setup-300x187.png" alt="" width="300" height="187" /></a>Um novo menu aparecerá em &#8216;Configurações &gt; Chat&#8217;, onde será possível configurar o limite e caracteres de cada mensagem e intervalo das atualizações de: mensagens e usuários.</p>
<h3>Utilização</h3>
<p><a  href="http://www.marcelomesquita.com/wp-content/uploads/2011/10/chat-dialog.png" class="thickbox no_icon" rel="gallery-277" title="chat-dialog"><img class="alignright size-medium wp-image-278" title="chat-dialog" src="http://www.marcelomesquita.com/wp-content/uploads/2011/10/chat-dialog-300x187.png" alt="" width="300" height="187" /></a>Para iniciar uma conversa, faça o login no site, vá para a página onde o widget está, clique no nome da pessoa com quem você quer conversar. Cada usuário tem uma janela própria que pode ser movida para qualquer canto da tela (<a  title="jQuery UI - Dialog" href="http://jqueryui.com/demos/dialog/" target="_blank">jQuery UI &#8211; Dialog</a>).</p>
<p>Caso alguém te mande uma mensagem, a janela de dialogo abrirá automáticamente, além de manter um breve histórico das conversas anteriores.</p>
<p>Caso você não queira mais receber mensagens de um determinado usuário, basta clicar no cadeado ao lado do nome do mesmo.</p>
<h3>Download</h3>
<p><a  title="MM Chat" href="http://downloads.wordpress.org/plugin/mm-chat.zip" target="_blank">MM Chat</a></p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;count=none&amp;text=Plugin%3A%20MM%20Chat" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&amp;count=none&amp;text=Plugin%3A%20MM%20Chat" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-mm-chat%2F&#038;title=Plugin%3A%20MM%20Chat" id="wpa2a_8">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/plugin-mm-chat/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Template para subcategorias</title>
		<link>http://marcelomesquita.com/template-para-subcategorias/</link>
		<comments>http://marcelomesquita.com/template-para-subcategorias/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 20:32:55 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[Funções]]></category>
		<category><![CDATA[categoria]]></category>
		<category><![CDATA[category]]></category>
		<category><![CDATA[get_term_children]]></category>
		<category><![CDATA[hierarchy]]></category>
		<category><![CDATA[hierarquia]]></category>
		<category><![CDATA[is_category]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://marcelomesquita.com/?p=268</guid>
		<description><![CDATA[Share/BookmarkAs últimas versões do WordPress melhoraram muito a hierarquia de templates, possibilitando criar modelos usando slug de tags ou categorias (category-noticias.php), nome dos autores (author-marcelo.php), tipos de arquivos (image.php) e até criar templates para tipos de posts (single-evento.php archive-evento.php). Uma &#8230; <a href="http://marcelomesquita.com/template-para-subcategorias/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;count=none&amp;text=Template%20para%20subcategorias" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;count=none&amp;text=Template%20para%20subcategorias" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&#038;title=Template%20para%20subcategorias" id="wpa2a_14">Share/Bookmark</a></p><p>As últimas versões do WordPress melhoraram muito a <a  href="http://codex.wordpress.org/Template_Hierarchy" target="_blank">hierarquia de templates</a>, possibilitando criar modelos usando slug de tags ou categorias (category-noticias.php), nome dos autores (author-marcelo.php), tipos de arquivos (image.php) e até criar templates para tipos de posts (single-evento.php archive-evento.php).</p>
<p>Uma coisa da qual sinto falta no WordPress é a possibilidade de criar um template para subcategorias. Dessa forma podemos dividir o site em áreas com cores específicas ou com sidebares diferenciados, por exemplo.</p>
<p>Para resolver esse problema, existe uma função do que recupera as subcategorias de uma dada categoria (<a  href="http://codex.wordpress.org/Function_Reference/get_term_children" target="_blank">get_term_children</a>) e as retorna em um array. Com isso podemos usar a template tag <a  href="http://codex.wordpress.org/Function_Reference/is_category">is_category</a> passando esse array como parâmetro.</p>
<p>Por fim basta condicionar o carregamento dos templates no arquivo category.php:</p>
<pre>if( is_category( 1 ) or is_category( get_term_children( 1, 'category' ) ) )
  include( 'category-noticias.php' );
elseif( is_category( 2 ) or is_category( get_term_children( 2, 'category' ) ) )
  include( 'category-eventos.php' );
else
  include( 'category-default.php' ); </pre>
<p>Assim para a categoria 1 e suas respectivas filhas, será usado o template category-noticias.php, para a categoria 2 e suas respectivas filhas será usado o template category-eventos.php e para as demais categorias, será usado o template category-default.php.</p>
<p>Para manter o código limpo, é recomendável que o template category.php tenha apenas as condições e os includes dos arquivos corretos, se você pretende manter o código padrão do template da categoria nesse arquivo, lembre-se de deixá-lo dentro da condição else.</p>
<h3>Download</h3>
<p><a  href="http://marcelomesquita.com/wp-content/uploads/2011/02/category.php.zip" target="_blank">category</a></p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;count=none&amp;text=Template%20para%20subcategorias" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&amp;count=none&amp;text=Template%20para%20subcategorias" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Ftemplate-para-subcategorias%2F&#038;title=Template%20para%20subcategorias" id="wpa2a_16">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/template-para-subcategorias/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Apresentação do WordPress Summit</title>
		<link>http://marcelomesquita.com/apresentacao-do-wordpress-summit/</link>
		<comments>http://marcelomesquita.com/apresentacao-do-wordpress-summit/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 13:07:03 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://marcelomesquita.com/?p=262</guid>
		<description><![CDATA[Share/BookmarkSegue abaixo a apresentação em prezi feita no WordPress Summit sobre as Novidades do WordPress 3.0 para Desenvolvedores: As novidades do WordPress 3.0 para desenvolvedores on Prezi Share/Bookmark]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;count=none&amp;text=Apresenta%C3%A7%C3%A3o%20do%20WordPress%20Summit" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;count=none&amp;text=Apresenta%C3%A7%C3%A3o%20do%20WordPress%20Summit" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&#038;title=Apresenta%C3%A7%C3%A3o%20do%20WordPress%20Summit" id="wpa2a_22">Share/Bookmark</a></p><p>Segue abaixo a apresentação em prezi feita no WordPress Summit sobre as Novidades do WordPress 3.0 para Desenvolvedores:</p>
<div class="prezi-player">
<style type="text/css" media="screen">.prezi-player { width: 500px; } .prezi-player-links { text-align: center; }</style>
<p><object id="prezi_wotqgv_viubd" name="prezi_wotqgv_viubd" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="500" height="400"><param name="movie" value="http://prezi.com/bin/preziloader.swf"/><param name="allowfullscreen" value="true"/><param name="allowscriptaccess" value="always"/><param name="bgcolor" value="#ffffff"/><param name="flashvars" value="prezi_id=wotqgv_viubd&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"/><embed id="preziEmbed_wotqgv_viubd" name="preziEmbed_wotqgv_viubd" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="400" bgcolor="#ffffff" flashvars="prezi_id=wotqgv_viubd&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"></embed></object>
<div class="prezi-player-links">
<p><a  title="" href="http://prezi.com/wotqgv_viubd/as-novidades-do-wordpress-30-para-desenvolvedores/">As novidades do WordPress 3.0 para desenvolvedores</a> on <a  href="http://prezi.com">Prezi</a></p>
</div>
</div>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;count=none&amp;text=Apresenta%C3%A7%C3%A3o%20do%20WordPress%20Summit" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&amp;count=none&amp;text=Apresenta%C3%A7%C3%A3o%20do%20WordPress%20Summit" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fapresentacao-do-wordpress-summit%2F&#038;title=Apresenta%C3%A7%C3%A3o%20do%20WordPress%20Summit" id="wpa2a_24">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/apresentacao-do-wordpress-summit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Plugin: Widget Custom Loop</title>
		<link>http://marcelomesquita.com/plugin-widget-custom-loop/</link>
		<comments>http://marcelomesquita.com/plugin-widget-custom-loop/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 19:23:01 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[custom loop]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://marcelomesquita.com/?p=251</guid>
		<description><![CDATA[Share/BookmarkExiste uma rotina na montagem dos conteúdos dos tema para WordPress já que é sempre um loop que carrega o conteúdo dos posts e páginas. Quando trabalhamos com sites grandes com várias colunas de informação a variação nesse loop se &#8230; <a href="http://marcelomesquita.com/plugin-widget-custom-loop/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;count=none&amp;text=Plugin%3A%20Widget%20Custom%20Loop" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;count=none&amp;text=Plugin%3A%20Widget%20Custom%20Loop" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&#038;title=Plugin%3A%20Widget%20Custom%20Loop" id="wpa2a_30">Share/Bookmark</a></p><p>Existe uma rotina na montagem dos conteúdos dos tema para WordPress já que é sempre um loop que carrega o conteúdo dos posts e páginas. Quando trabalhamos com sites grandes com várias colunas de informação a variação nesse loop se dá quase sempre por categorias &#8211; uma coluna mostra os posts da categoria x enquanto outra coluna mostra os posts da categoria y. A maioria das alterações era na estrutura html desses loops, então porque não automatizar esse processo?</p>
<p><a  href="http://marcelomesquita.com/wp-content/uploads/2010/04/custom-loop.png" class="thickbox no_icon" rel="gallery-251" title="custom-loop"><img class="alignright size-medium wp-image-253" title="custom-loop" src="http://marcelomesquita.com/wp-content/uploads/2010/04/custom-loop-236x300.png" alt="custom-loop" width="236" height="300" /></a>Tentando facilitar as coisas eu criei o plugin Widget Custom Loop, que se trata de um widget que permite a definição do loop e personalização de sua estrutura.</p>
<h3>Instalação</h3>
<ol>
<li>Faça o upload do plugin ‘widget-custom-loop’ para o diretório ‘wp-content/plugins/’ do WordPress;</li>
<li>Ative o plugin.</li>
</ol>
<h3>Utilização</h3>
<p>Na páginda de widgets deverá aparecer o widget &#8216;Custom Loop&#8217;. Arraste o widget para o sidebar desejado e configure de acordo com suas necessidades.</p>
<p>Por padrão, caso o campo &#8216;Loop&#8217; seja deixado em branco o plugin monta um loop automático. Esse modelo de loop automático é definido através da opção &#8216;loop_model&#8217;, caso o tema queira definir um modelo de loop, basta salvar esse modelo na opção &#8216;loop_model&#8217;, por exemplo:</p>
<p>update_option( &#8216;loop_model&#8217;, &#8216;&lt;h3&gt;{title}&lt;/h3&gt;{excerpt}&#8217; );</p>
<p>Dessa forma, sempre que o &#8216;Custom Loop&#8217; for adicionado em algum sidebar, ele seguirá esse modelo por padrão.</p>
<h3>Download</h3>
<p><a  href="http://downloads.wordpress.org/plugin/widget-custom-loop.zip" target="_blank">Widget Custom Loop</a></p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;count=none&amp;text=Plugin%3A%20Widget%20Custom%20Loop" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&amp;count=none&amp;text=Plugin%3A%20Widget%20Custom%20Loop" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fplugin-widget-custom-loop%2F&#038;title=Plugin%3A%20Widget%20Custom%20Loop" id="wpa2a_32">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/plugin-widget-custom-loop/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>WordPress é CMS</title>
		<link>http://marcelomesquita.com/wordpress-e-cms/</link>
		<comments>http://marcelomesquita.com/wordpress-e-cms/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 02:36:09 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[info]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Temas]]></category>

		<guid isPermaLink="false">http://marcelomesquita.com/?p=245</guid>
		<description><![CDATA[Share/BookmarkEsse post era pra ser uma resposta a um comentário que recebi no post &#8216;Migrando Conteúdo do Drupal para WordPress&#8216; que escrevi, mas acabou ficando muito grande e se tornou um post. Minha intensão intenção não é denegrir a imagem &#8230; <a href="http://marcelomesquita.com/wordpress-e-cms/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;count=none&amp;text=WordPress%20%C3%A9%20CMS" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;count=none&amp;text=WordPress%20%C3%A9%20CMS" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&#038;title=WordPress%20%C3%A9%20CMS" id="wpa2a_38">Share/Bookmark</a></p><p>Esse post era pra ser uma resposta a um comentário que recebi no post &#8216;<a  href="http://marcelomesquita.com/migrando-conteudo-do-drupal-para-o-wordpress/">Migrando Conteúdo do Drupal para WordPress</a>&#8216; que escrevi, mas acabou ficando muito grande e se tornou um post. Minha <span style="text-decoration: line-through;">intensão</span> intenção não é denegrir a imagem do Drupal, só quero derrubar alguns mitos que existem em relação ao WordPress quando comparado a outros CMS&#8217;s &#8211; nesse caso o Drupal.</p>
<p>Já trabalhei desenvolvendo temas e plugins para os dois CMS&#8217;s e minha experiência com o WordPress foi muito mais simples e satisfatória.</p>
<h3><span style="text-decoration: line-through;">WordPress é para Blog</span></h3>
<p>O argumento de WordPress ser para blogs já não cola mais, no <a  href="http://wordpress.org/showcase/">Showcase</a> do WordPress, vocês encontram vários exemplos de portais, vitrines e sites que não tem nenhum traço de blog (não que isso seja algo ruim) em seu visual. O fato é: você faz o que quer com o WordPress.</p>
<p>É verdade que existem milhões de blogs no ar que utilizam o WordPress, mas isso não significa que o WordPress só sirva para blogs. A explicação mais adequada para sua popularização se deve a sua simplicidade, facilidade de uso, facilidade de personalização, facilidade de ampliação e integração com outros sistemas. O WordPress diminui a dependencia que os usuários finais têm com os técnicos de informática pois ele é intuitivo, muitos usuários sequer precisam de treinamento para começar a publicar conteúdo.</p>
<p>Também vejo milhares de temas de blogs desenvolvidos para WordPress mas em muitos casos esses temas sequer foram desenvolvidos por programadores, foram designers que se aventuraram no mundo dos códigos e tiveram êxito, o que também é algo positivo pois prova como é tranquilo desenvolver um tema para o WordPress.</p>
<h3><span style="text-decoration: line-through;">WordPress não é &#8216;completo&#8217;</span></h3>
<p>Outra comparação errônea é pensar que determinado CMS é mais completo que outro. O termo &#8216;completo&#8217; é muito relativo, de que adianta um CMS oferecer trinta recursos se você utiliza apenas quatro ou cinco. Os vinte e cinco recursos restantes acabam por complicar o uso da ferramenta e piorar a sua performance. O WordPress oferece um sistema mais enxuto com possibilidades de expansão (plugins), assim você consegue manter apenas o que é necessário para você.</p>
<p>Quanto ao uso de plugins, a instalação básica do Drupal já ativa por padrão vários plugins para as tarefas mais básicas que um CMS poderia oferecer, como: upload de imagens, comentários e taxonomia. Esses recursos são integrados ao WordPress o que fornece mais segurança e facilita a manutenção da plataforma.</p>
<p>Quem ainda tiver dúvidas da qualidade do WordPress como CMS, talvez não saiba que o WordPress foi eleito o <a  href="http://info.abril.com.br/premioinfo/2009/lista3.shl" target="_blank">CMS do ano em 2009</a> pela Info.</p>
<h3>Conclusão</h3>
<p>Enfim, eu penso que não há nada que outros CMS&#8217;s façam que o WordPress não possa fazer mas, com certeza, não é qualquer um que pode fazer.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;count=none&amp;text=WordPress%20%C3%A9%20CMS" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&amp;count=none&amp;text=WordPress%20%C3%A9%20CMS" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fwordpress-e-cms%2F&#038;title=WordPress%20%C3%A9%20CMS" id="wpa2a_40">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/wordpress-e-cms/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Migrando conteúdo do Drupal para o WordPress</title>
		<link>http://marcelomesquita.com/migrando-conteudo-do-drupal-para-o-wordpress/</link>
		<comments>http://marcelomesquita.com/migrando-conteudo-do-drupal-para-o-wordpress/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 14:12:53 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://marcelomesquita.com/?p=237</guid>
		<description><![CDATA[Share/BookmarkDa necessidade de migrar o conteúdo do Drupal para o WordPress, surgiu o plugin para o Drupal chamado &#8216;Drupal to WordPress&#8217;. Durante o desenvolvimento desse plugin tive a oportunidade de conhecer um pouco mais sobre o Drupal e ficarei grato &#8230; <a href="http://marcelomesquita.com/migrando-conteudo-do-drupal-para-o-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;count=none&amp;text=Migrando%20conte%C3%BAdo%20do%20Drupal%20para%20o%20WordPress" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;count=none&amp;text=Migrando%20conte%C3%BAdo%20do%20Drupal%20para%20o%20WordPress" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&#038;title=Migrando%20conte%C3%BAdo%20do%20Drupal%20para%20o%20WordPress" id="wpa2a_46">Share/Bookmark</a></p><p>Da necessidade de migrar o conteúdo do Drupal para o WordPress, surgiu o plugin para o Drupal chamado &#8216;Drupal to WordPress&#8217;. Durante o desenvolvimento desse plugin tive a oportunidade de conhecer um pouco mais sobre o Drupal e ficarei grato se nunca mais precisar trabalhar com ele.</p>
<p>A instalação básica do Drupal gera 47 tabelas e isso dificulta muito o trabalho de migração dos conteúdos. Entendo que isso torne o sistema mais &#8216;completo&#8217;, mas fico pensando em quantas instalações do Drupal realmente utilizam todas essas tabelas. Acredito ser muito mais interessante um sistema enxuto com possibilidades de expansão e é por isso que gosto tanto do WordPress.</p>
<p>Portanto, aos usuário de Drupal que quiserem experimentar algo novo, heis a chance!</p>
<h3>Descrição</h3>
<p>Esse plugin recupera o conteúdo dos nodes, comentários e anexos do Drupal, qualquer outro conteúdo inserido através de plugin não é recuperado. Ele separa os tipos de nodes em categorias no WordPress já que as categorias no Drupal não são obrigatórias.</p>
<h3>Instalação</h3>
<ol>
<li>baixe o plugin;</li>
<li>descompacte-o no diretório &#8216;sites/all/modules/&#8217; ou &#8216;sites/nome-do-seu-site/modules/&#8217;;</li>
<li>vá para &#8216;Administer › Site building › Modules&#8217;;</li>
<li>marque o módulo &#8216;Drupal to WordPress&#8217;;</li>
<li>salve as configurações.</li>
</ol>
<h3>Modo de usar</h3>
<h4>Backup</h4>
<p>Após a instalação deverá aparecer um novo item no menu chamado &#8216;Drupal to WordPress&#8217;, basta clicar nele para baixar o arquivo de migração. Caso o item do menu não apareça, você pode digitar o endereço do seu site em Drupal seguido de &#8216;drupal_to_wordpress&#8217;, por exemplo: http://www.meusite.com/drupal_to_wordpress</p>
<h4>Restauração</h4>
<ol>
<li>faça o login no WordPress;</li>
<li>vá para &#8216;Ferramentas › Importar&#8217;;</li>
<li>selecione o item &#8216;WordPress&#8217;;</li>
<li>faça o upload do arquivo de backup;</li>
<li>informe o nome dos autores;</li>
<li>marque a opção &#8216;baixar e importar arquivos anexos&#8217; para copiar os arquivos do Drupal;</li>
<li>clique em enviar.</li>
</ol>
<h3><a  href="http://marcelomesquita.com/wp-content/uploads/2009/12/drupal_to_wordpress.zip" target="_blank">Download</a></h3>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;count=none&amp;text=Migrando%20conte%C3%BAdo%20do%20Drupal%20para%20o%20WordPress" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&amp;count=none&amp;text=Migrando%20conte%C3%BAdo%20do%20Drupal%20para%20o%20WordPress" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fmigrando-conteudo-do-drupal-para-o-wordpress%2F&#038;title=Migrando%20conte%C3%BAdo%20do%20Drupal%20para%20o%20WordPress" id="wpa2a_48">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/migrando-conteudo-do-drupal-para-o-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Criando Meta Boxes</title>
		<link>http://marcelomesquita.com/criando-meta-boxes/</link>
		<comments>http://marcelomesquita.com/criando-meta-boxes/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 20:30:41 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[Documentação]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[add_meta_box]]></category>
		<category><![CDATA[metabox]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.marcelomesquita.com/?p=198</guid>
		<description><![CDATA[Share/BookmarkNa versão 2.7 o WordPress estreiou as meta boxes, que são aquelas caixinhas arrastáveis que estão presente no dashboard, na área de edição de posts e páginas além de outros locais na área administrativa do WordPress. Muitas vezes, na criação &#8230; <a href="http://marcelomesquita.com/criando-meta-boxes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;count=none&amp;text=Criando%20Meta%20Boxes" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;count=none&amp;text=Criando%20Meta%20Boxes" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&#038;title=Criando%20Meta%20Boxes" id="wpa2a_54">Share/Bookmark</a></p><p>Na versão 2.7 o WordPress estreiou as meta boxes, que são aquelas caixinhas arrastáveis que estão presente no dashboard, na área de edição de posts e páginas além de outros locais na área administrativa do WordPress.</p>
<p>Muitas vezes, na criação de plugins que interajem com os posts ou páginas, é necessário adicionar um novo campo à area de edição. Afim de manter a formatação do WordPress, a criação de uma meta box é o caminho mais limpo e fácil. Também é possível adicionar as metaboxes as páginas dos seus plugins, mas é uma tarefa um pouco mais complicada, então vamos deixar para outro artigo.</p>
<h4>add_meta_box($id, $title, $callback, $page, $context=&#8217;advanced&#8217;, $priority=&#8217;default&#8217;, $callback_args=null);</h4>
<p>Essa função é a responssável por adicionar a meta box a uma determinada página. O $id é o identificador único para o HTML, é com esse identificador que o WordPress manipulará sua metabox. Já o $title é o título da metabox, $callback é a sua função que ficará responssável pelo carregamento do conteúdo dentro da metabox e $page é a página onde a sua metabox será carregada (&#8216;page&#8217;, &#8216;post&#8217;, &#8216;link&#8217;, etc). Os outros parâmetros são opcionais: $context define o local da página onde sua metabox será carregada por padrão (&#8216;normal&#8217;, &#8216;advanced&#8217;, &#8216;side&#8217;) enquanto $priority diz o posicionamento padrão da metabox dentro do $context (&#8216;high&#8217; ou &#8216;low&#8217;), e por fim $callback_args que permite a passagem de argumentos à metabox.</p>
<p>Por exemplo, para criar uma metabox que mostre uma frase de incentivo (não consegui pensar em algo mais simples e útil) na parte de cima do sidebar da tela de edição de posts, ficaria assim:</p>
<pre>add_meta_box('incentivador', 'Incentivador', 'incentive_me', 'post', 'side', 'high');</pre>
<p>Não se esqueça de criar a função &#8216;incentive_me&#8217; em seu plugin.</p>
<p>Agora só falta adicionar um gancho para a chamada da metabox:</p>
<pre>add_action('do_meta_boxes', 'incentivador_metabox');</pre>
<p>Onde &#8216;incentivador_metabox&#8217; é a função que conterá o seu add_meta_box.</p>
<p>O código final ficaria assim:</p>
<pre>&lt;?php
/*
Plugin Name: MetaBox: Incentivador
Description: Mostra uma frase
Version: 0.1
Author: Marcelo Mesquita
Author URI: http://www.marcelomesquita.com/
*/

add_action('do_meta_boxes', 'incentivador_metabox');

function incentivador_metabox()
{
    add_meta_box('incentivador', 'Incentivador', 'incentive_me', 'post', 'side', 'high');
}

function incentive_me()
{
    $frases = array(
        'Você consegue!',
        'Faça seu melhor!',
        'Tudo é possível!'
    );

    print $frases[rand(0, 3)];
}
?&gt;</pre>
<p>Para saber mais acesse a <a  href="http://codex.wordpress.org/Function_Reference/add_meta_box" target="_blank">Referência da Função add_meta_box</a></p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;count=none&amp;text=Criando%20Meta%20Boxes" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&amp;count=none&amp;text=Criando%20Meta%20Boxes" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-meta-boxes%2F&#038;title=Criando%20Meta%20Boxes" id="wpa2a_56">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/criando-meta-boxes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Criando Widgets para o WordPress 2.8</title>
		<link>http://marcelomesquita.com/criando-widgets-para-o-wordpress-28/</link>
		<comments>http://marcelomesquita.com/criando-widgets-para-o-wordpress-28/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 03:27:39 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[Documentação]]></category>
		<category><![CDATA[Temas]]></category>
		<category><![CDATA[2.8]]></category>
		<category><![CDATA[widgets]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.marcelomesquita.com/?p=194</guid>
		<description><![CDATA[Share/BookmarkComo todos já devem saber, foi lançada a versão 2.8 do WordPress e entre as principais melhorias está novo sistema de widgets. A interface do usuário está muito mais simples de utilizar, todos os widgets e sidebares ficam listados, basta &#8230; <a href="http://marcelomesquita.com/criando-widgets-para-o-wordpress-28/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;count=none&amp;text=Criando%20Widgets%20para%20o%20WordPress%202.8" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;count=none&amp;text=Criando%20Widgets%20para%20o%20WordPress%202.8" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&#038;title=Criando%20Widgets%20para%20o%20WordPress%202.8" id="wpa2a_62">Share/Bookmark</a></p><p>Como todos já devem saber, foi lançada a versão 2.8 do WordPress e entre as principais melhorias está novo sistema de widgets. A interface do usuário está muito mais simples de utilizar, todos os widgets e sidebares ficam listados, basta arrastar um widget para o sidebar desejado e pronto! O WordPress salva automaticamente o sidebar, além disso os widgets já são multiplicáveis então não é mais necessário ficar regulando a divisão deles ou utilizar plugins que façam a duplicação.</p>
<p>Mas a melhoria não foi só na interface com o usuário, a criação dos widgets também ficou muito mais simples, o WordPress disponibiliza uma classe com todo o código bruto para o funcionamento dos widgets sobrando para o desenvolvedor apenas algumas funções específicas.</p>
<p>A <a  href="http://codex.wordpress.org/Plugins/WordPress_Widgets_Api" target="_blank">API dos Widgets do WordPress</a> fornece um modelo para a criação dos widgets:</p>
<pre>class My_Widget extends WP_Widget {
	function My_Widget() {
		// widget actual processes
	}

	function widget($args, $instance) {
		// outputs the content of the widget
	}

	function update($new_instance, $old_instance) {
		// processes widget options to be saved
	}

	function form($instance) {
		// outputs the options form on admin
	}
}
register_widget('My_Widget');</pre>
<p>Explicando rapidamente, nesse modelo você cria uma classe &#8216;My_Widget&#8217; filha de uma classe &#8216;WP_Widget&#8217; que é a classe fornecida pelo WordPress contendo o código bruto, restando ao desenvolvedor a definição dos métodos:</p>
<h3>My_Widget()</h3>
<p>O construtor deve sempre ter o mesmo nome da classe ou se chamar __construct (depende da versão do PHP). No construtor são definidos o id, o nome, a descrição, e outras informações relativas ao widget.</p>
<h3>widget($args, $instance)</h3>
<p>Esse método define a forma como o widget é apresentado no tema. O parêmetro $args é um array contendo a formatação da estrutura do widget como: tags de abertura e fechamento do widget e do título do widget além do nome e id do widget.</p>
<p>O conteúdo dessa função não muda muito em relação ao modelo anterior dos widgets que era chamado pelo &#8216;register_sidebar_widget&#8217;, a única diferença é que o conteúdo da função, antes carregado do banco, agora vem todo no array $instance.</p>
<h3>form($instance)</h3>
<p>O médoto form representa a inteface administrativa do widget, onde é feita a configuração do mesmo, sua definição não é obrigatória.</p>
<p>Esse método é o espelho da função chamada pelo &#8216;register_widget_control&#8217;, mas aqui fica somente a estrutura do formulário. Assim como o método &#8216;widget&#8217;, aqui os dados não precisam mais serem carregados do banco, o array $instance traz todos os dados. O que notei de diferente na montagem do formulário foram apenas as nomeclaturas dos campos, agora tendo que ser feita da seguinte forma:</p>
<pre>&lt;input type="text" id="<span style="color: #990000;">&lt;?php print $this-&gt;get_field_id('nome-do-campo'); ?&gt;</span>" name="<span style="color: #990000;">&lt;?php print $this-&gt;get_field_name('nome-do-campo); ?&gt;</span>" value="&lt;?php print $instance['nome-do-campo']; ?&gt;" /&gt;</pre>
<h3>update($new_instance, $old_instance)</h3>
<p>Também não é necessária a definição do método update. É esse método que realiza o processamento dos dados antes de salva-los no banco. O parâmetro $new_instance contém os dados novos (os que acabaram de ser informados) enquanto o $old_instance contém os dados antigos, para o caso de ser necessário fazer uma comparação.</p>
<p>Após o processamento dos dados, um array com os dados finais deverá ser retornado.</p>
<p>Não pretendo explicar novamente a lógica de criação de um widget, portanto vou simplesmente refazer o widget &#8216;Posts Mais Quentes&#8217; nesse novo modelo e caso tenham dúvidas, consultem o post <a  href="http://www.marcelomesquita.com/opcoes-de-widgets/">Opções de Widgets</a>.</p>
<pre>&lt;?php
/*
Plugin Name: Widget: Posts mais quentes
Description: Lista posts mais comentados
Version: 0.3
Author: Marcelo Mesquita
Author URI: http://www.marcelomesquita.com/
*/

// Posts Mais Quentes
class Widget_Posts_Mais_Quentes extends WP_Widget
{
	function Widget_Posts_Mais_Quentes()
	{
		$this-&gt;WP_Widget('posts_mais_quentes', 'Posts Mais Quentes');
	}

	function widget($args, $instance)
	{
		global $wpdb;

		// Valor padrão, caso nada tenha sido informado
		if(empty($instance['quantidade'])) $instance['quantidade'] = "5";
		// Recuperando os posts
		$hot_posts = $wpdb-&gt;get_results("SELECT ID, post_title, comment_count FROM {$wpdb-&gt;posts} WHERE post_status = 'publish' ORDER BY comment_count DESC LIMIT {$instance['quantidade']}");

		if(empty($hot_posts))
			return false;

		// Usando o modelo de widgets do tema
		print $args['before_widget'];
		print $args['before_title'] . $instance['titulo'] . $args['after_title'];
		print "&lt;ul&gt;";
		// Listando os posts mais quentes
		foreach($hot_posts as $hot_post)
			print "&lt;li&gt;&lt;a href='" . get_permalink($hot_post-&gt;ID) . "'&gt;{$hot_post-&gt;post_title} ({$hot_post-&gt;comment_count})&lt;/a&gt;&lt;/li&gt;";
		print "&lt;/ul&gt;";
		print $args['after_widget'];
	}

	function update($new_instance, $old_instance)
	{
		return $new_instance;
	}

	function form($instance)
	{
		?&gt;
			&lt;p&gt;
				&lt;label for="&lt;?php print $this-&gt;get_field_id('titulo'); ?&gt;"&gt;Título:&lt;/label&gt;
				&lt;input type="text" id="&lt;?php print $this-&gt;get_field_id('titulo'); ?&gt;" name="&lt;?php print $this-&gt;get_field_name('titulo'); ?&gt;" maxlength="26" value="&lt;?php print $instance['titulo']; ?&gt;" class="widefat" /&gt;
				&lt;label for="&lt;?php print $this-&gt;get_field_id('quantidade'); ?&gt;"&gt;Quantidade:&lt;/label&gt;
				&lt;input type="text" id="&lt;?php print $this-&gt;get_field_id('quantidade'); ?&gt;" name="&lt;?php print $this-&gt;get_field_name('quantidade'); ?&gt;" maxlength="2" value="&lt;?php print $instance['quantidade']; ?&gt;" class="widefat" /&gt;
			&lt;/p&gt;
		&lt;?php
	}
}
// register widget
add_action('widgets_init', create_function('', 'return register_widget("Widget_Posts_Mais_Quentes");'));</pre>
<p>Boa sorte!</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;count=none&amp;text=Criando%20Widgets%20para%20o%20WordPress%202.8" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&amp;count=none&amp;text=Criando%20Widgets%20para%20o%20WordPress%202.8" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fcriando-widgets-para-o-wordpress-28%2F&#038;title=Criando%20Widgets%20para%20o%20WordPress%202.8" id="wpa2a_64">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/criando-widgets-para-o-wordpress-28/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Regex em JavaScript para remover tags</title>
		<link>http://marcelomesquita.com/regex-em-javascript-para-remover-tags/</link>
		<comments>http://marcelomesquita.com/regex-em-javascript-para-remover-tags/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 16:22:37 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[MicroBlog]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[regex]]></category>

		<guid isPermaLink="false">http://www.marcelomesquita.com/?p=190</guid>
		<description><![CDATA[Share/BookmarkExpressão regular em JavaScript para remover as tags de um texto: text = text.replace(/&#60;[^&#62;]*&#62;/g, ""); Onde text é o texto formatado com as tags. Share/Bookmark]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;count=none&amp;text=Regex%20em%20JavaScript%20para%20remover%20tags" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;count=none&amp;text=Regex%20em%20JavaScript%20para%20remover%20tags" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&#038;title=Regex%20em%20JavaScript%20para%20remover%20tags" id="wpa2a_70">Share/Bookmark</a></p><p>Expressão regular em JavaScript para remover as tags de um texto:</p>
<pre>text = text.replace(/&lt;[^&gt;]*&gt;/g, "");</pre>
<p>Onde text é o texto formatado com as tags.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;count=none&amp;text=Regex%20em%20JavaScript%20para%20remover%20tags" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&amp;count=none&amp;text=Regex%20em%20JavaScript%20para%20remover%20tags" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fregex-em-javascript-para-remover-tags%2F&#038;title=Regex%20em%20JavaScript%20para%20remover%20tags" id="wpa2a_72">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/regex-em-javascript-para-remover-tags/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Minhas impressões sobre o BuddyPress</title>
		<link>http://marcelomesquita.com/minhas-impressoes-sobre-o-buddypress/</link>
		<comments>http://marcelomesquita.com/minhas-impressoes-sobre-o-buddypress/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 21:11:50 +0000</pubDate>
		<dc:creator>stallefish</dc:creator>
				<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[crítica]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.marcelomesquita.com/?p=179</guid>
		<description><![CDATA[Share/BookmarkEstive trabalhando no projeto Cultura Digital e não tem sido uma tarefa fácil. Grande parte da dificuldade que estamos tendo é atribuída ao BuddyPress. Ele não parece ter sido desenvolvido para o WordPress, suas tabelas e códigos (tanto interface quanto &#8230; <a href="http://marcelomesquita.com/minhas-impressoes-sobre-o-buddypress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;count=none&amp;text=Minhas%20impress%C3%B5es%20sobre%20o%20BuddyPress" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;count=none&amp;text=Minhas%20impress%C3%B5es%20sobre%20o%20BuddyPress" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&#038;title=Minhas%20impress%C3%B5es%20sobre%20o%20BuddyPress" id="wpa2a_78">Share/Bookmark</a></p><p>Estive trabalhando no projeto Cultura Digital e não tem sido uma tarefa fácil. Grande parte da dificuldade que estamos tendo é atribuída ao BuddyPress. Ele não parece ter sido desenvolvido para o WordPress, suas tabelas e códigos (tanto interface quanto programação) não seguem um padrão semelhante ao do WordPress (&#8220;Code is Poetry&#8221;).</p>
<h3>Banco de Dados</h3>
<p>Me espantei na primeira vez que resolvi analisar a estrutura de dados do BuddyPress; vinte e uma tabelas novas criadas! A instalação original do WP utiliza apenas dez tabelas, a do WPMU necessita de dezesete, por que diabos o BP precisaria de vinte e uma só pra ele, resultando em trinta e oito no total (BP + WPMU).</p>
<p>Após gerar o modelo de dados do BP pude ter uma visão mais ampla da bobagem que haviam feito:</p>
<h4>Nomeclatura das tabelas</h4>
<p>Nomes como &#8216;wp_bp_acivity_user_activity&#8217;, &#8216;wp_bp_acivity_user_activity_cached&#8217;, &#8216;bp_messages_messages&#8217; ou &#8216;bp_messages_threads&#8217; já eram em si um quebra-cabeça a ser decifrado.</p>
<h4>Normalização das tabelas</h4>
<p>Ao começar a trabalhar com as tabelas não pude deixar de notar a quantidade de campos &#8216;user_id&#8217; espalhados por tabelas, de alguma forma, conectadas. O caso mais claro foi o das tabelas &#8216;bp_activity_user_activity&#8217; e &#8216;bp_activity_user_activity_cached&#8217; que já são ligados através do campo &#8216;item_id&#8217; mas ambas possuem os campo &#8216;user_id&#8217;.</p>
<p>Outro caso que me fez perder alguns cabelos foi o da tabela &#8216;bp_messages_threads&#8217; que apenas mantém a ligação das mensagens que são respostas a outras mensagens. Isso poderia ser feito simplesmente criando um auto-relacionamento na tabela &#8216;bp_messages_messages&#8217;.</p>
<h4>Dados redundantes</h4>
<p>Acredito que o pior de tudo foi descobrir que algumas tabelas criadas pelo BuddyPress nem precisavam existir, pois serviam para armazenar informações que podiam ser armazenadas nas tabelas do WordPress.</p>
<p>Destaco o conjunto de tabelas &#8216;bp_xprofile_fields&#8217; e &#8216;bp_xprofile_data&#8217; que server para adicionar novos campos ao perfil do usuário. Para passar uma idéia, uma única tabela do WordPress substitui essas duas do BuddyPress, o plugin Register Plus é um exemplo de como isso pode ser feito. O único motivo, que vejo para que o BuddyPress tenha feito essa separação, seria para obter ganhos em performance, mas o fato de existir um campo para cada dado me fez pensar que a performance estaria equilibrada já que na tabela &#8216;usermeta&#8217; esses dados poderiam estar em forma de array e, assim, ocupariam um campo apenas.</p>
<p>Também não gostei da forma como o BuddyPress trata as atividades. Apesar das atividades do site serem o conjunto das atividades de cada usuário, os dados ficam duplicados em diferentes tabelas. Por exemplo: Ao alterar meu perfil uma nova atividade é cadastrada na tabela &#8216;bp_activity_user_activity&#8217; e depois a mesma informação é cadastrada na tabela &#8216;bp_activity_sitewide&#8217;.</p>
<h3>Codificação</h3>
<p>A codificação também ficou a desejar.</p>
<h4>Funções engessadas</h4>
<p>Diferente do WordPress onde as &#8216;template tags&#8217; (funções que auxiliam a montagem do tema) praticamente não interferem na forma como o html é montado, no BuddyPress algumas &#8216;template tags&#8217; carregam muito lixo e apresentam um visual pré-definido. Isso dificulta a personalização do tema pois força a alteração dos arquivos do BuddyPress para atingir um resultado esperado.</p>
<p>Por exemplo: a função que carrega os dados do perfil (xprofile_get_profile) monta uma tabela zebrada (uma linha clara outra escura), apenas com os dados informados e adiciona link a cada item. Mas a zebra que o BP monta é baseada nos dados que estão no banco, então se eu tiver deixado algum campo vazio a tabela acaba pulando uma cor deixando duas linhas claras e uma escura ou algo parecido. Se eu quiser corrigir essa zebra ou retirar os links dos dados eu precisarei criar uma função do zero para não ter que &#8216;hackear&#8217; o BP.</p>
<h4>Mistura de tema com plugin</h4>
<p>Os temas são muito dependentes de funções definidas nos plugins. Essa questão é mais ou menos a mesma citada no item acima, imagine tentar criar uma nova função apenas para recuperar os membros ou pense na dor de cabeça que é ficar alternando entre plugins e tema para entender como tal trecho de código é montado.</p>
<h3>Conclusão</h3>
<p>O BuddyPress tem muito a evoluir antes de se tornar um sistema confiável, acredito que o principal é voltar os esforços para deixá-lo mais compatível com o seu hospedeiro, o WordPress. Assim poderá haver uma maior compatibilidade entre os plugins e temas, além de diminuir a curva de aprendizado para os desenvolvedores que já trabalham com o WordPress, o que, na minha opinião, poderá resultar em um impulso na comunidade BuddyPress.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;count=none&amp;text=Minhas%20impress%C3%B5es%20sobre%20o%20BuddyPress" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;counturl=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&amp;count=none&amp;text=Minhas%20impress%C3%B5es%20sobre%20o%20BuddyPress" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a  class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmarcelomesquita.com%2Fminhas-impressoes-sobre-o-buddypress%2F&#038;title=Minhas%20impress%C3%B5es%20sobre%20o%20BuddyPress" id="wpa2a_80">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://marcelomesquita.com/minhas-impressoes-sobre-o-buddypress/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

