29 abr
Em: WordPress

Entendendo o Loop do WordPress

1. O que é o Loop do WordPress?
O Loop é um conjunto de comandos em PHP (linguagem em que o WordPress foi construído) que tem como função buscar um ou mais posts na base de dados e possibilitar que as informações sobre o post sejam mostradas em uma página web. Essas informações podem ser o título do post, seu conteúdo, o autor, a data, e todas as demais informações de um post.

Por essa definição já dá pra ter uma idéia da importância do Loop, correto?

A seguir, os comandos que o compõem:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
 
    [Aqui vai o código dentro do loop]
 
<?php endwhile; ?>
<?php else : ?>
 
    [O que fazer ser não há posts?]
 
<?php endif; ?>

2. Onde está localizado o Loop?
Se você quiser ver o loop no seu blog, acesse o painel de administração, depois vá em Design > Theme Editor, e clique em index.php, à direita. Navegue pelo arquivo usando a barra lateral que logo você achará um código semelhante a este aqui de cima.

Se preferir editar o arquivo PHP diretamente, utilize um cliente FTp (como o Filezilla ou o SmartFTP) e navegue no seu servidor até a pasta onde está localizado seu blog, depois vá é wp-content/themes/[nome do tema ativo]/index.php.

Na verdade outras páginas do tema também têm o loop, tais como single.php (que mostra o post sozinho em uma página e a page.php).

3. Como ele funciona?
Basicamente o que o loop faz é:

1. Consultar a base de dados para saber se há posts que atendem aos critérios de busca (por exemplo, posts classificados segundo uma determinada categoria, ou, na página inicial os “n” últimos posts publicados no seu blog);
2. Formar uma “fila” de posts que atendem a esses critérios;
3. Enquanto ainda houver posts na fila, repetir os comandos que se encontram dentro do loop, para cada um dos posts.

A imagem abaixo representa esquematicamente o funcionamento do loop:
Assim, para listar o título e o conteúdo de cada um dos posts, é só incluir esses comandos dentro do loop. Como fazer isso? Através das “Template Tags”!

4. Template Tags
Template Tags nada mais são que funções internas do WordPress que, quando acionadas, trazem como resultado um determinado elemento de texto, a ser mostrado na página html, que é a página que os usuários acabam vendo. Alguns exemplos de template tags estão listados abaixo:

<?php the_title(); ?>
<?php the_content(); ?>
<?php the_time('F jS, Y'); ?>  
<?php the_permalink(); ?>

Mostra o título do post
Mostra o conteúdo do post
Mostra a data em que o post foi publicado, seguindo o padrão indicado entre parênteses
Mostra a URL do post

O site oficial do WordPress tem uma página só sobre as Template Tags. Lá estão praticamente todas as tags disponíveis.

Para usá-las, basta adicioná-las dentro do loop, cuidando para complementar com os elementos html adequados para que o texto resultante da Tag seja adequadamente representado. Por exemplo, é importante diferenciar o título do corpo do post, para que o resultado final não fique visualmente pobre. Para isso, é possível fazer o seguinte:

<h1><?php the_title(); ?></h1>
<p class="info">Categorias: <?php the_category(' '); ?>. Postado em: <?php the_time('F jS, Y'); ?>
<p><?php the_content(); ?></p>

Dessa forma é possível mostrar o título do Post destacado, com a tag html h1 e o post como parágrafo normal. Além disso, é possível usar estilos CSS para obter maior controle sobre o resultado final.

As imagens abaixo mostram um exemplo de Loop “básico”.

5. Truques interessantes com o Loop do WordPress

Inserir AdSense depois do primeiro post
Depois dos comandos que mostram o conteúdo do post, coloque o seguinte código:

<?php if ($count == 1) : ?>
 
// Insira seu código do AdSense aqui
 
<?php endif; $count++ ; ?>

Mostrar apenas posts de uma determinada categoria
Para isso, é preciso refazer a consulta aos posts, dizendo ao WordPress para apenas recuperar os “n” posts de uma determinada categoria. Esse comando deve vir antes do Loop.

<?php query_posts('category_name=nome_da_categoria&showposts=10'); ?>
[Depois inicia o Loop]

Diferenciar posts de uma determinada categoria
Dentro do loop, é preciso testar se o post pertence à categoria determinada. Se sim, atribuir uma classe CSS. Se não, atribuir outra (a normal).

<!-- Início do Loop -->
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 
 !--< Testa se está na categoria 3. -->
 
 <?php if ( in_category('3') ) { ?>
           <div class="post-cat-three">
 <?php } else { ?>
           <div class="post">
 <?php } ?>
Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.
27 abr
Em: WordPress

Migrando múltiplos blogs em WordPress 3.0 Multisite

Desde a versão 3.0 , WordPress inclui novas funções em vários locais, o que significa que ele pode executar muitos blogs, mesmo com seus próprios domínios separados, em uma instalação do WordPress. Este tutorial explica como migrar múltiplas instalações de WordPress em um multi-site do WordPress. Você pode migrar os sites que estão usando seu próprio domínio, bem como sites usando um subdomínio do seu domínio principal.

Este tutorial assume que você está hospedando o WordPress em um site usando o cPanel. Se você estiver usando alguma coisa para configurar o servidor, você terá de adaptar essas instruções.

. Backup seus sites

Gerar um backup completo do site no cPanel. Pode também contribuir para copiar todos os arquivos no servidor via FTP, para que você possa acessar facilmente os arquivos de plugins e temas, o que você precisa em uma etapa posterior.

1. Exportação de suas instalações existentes WordPress

Em cada uma das suas instalações existentes WordPress, vá em Ferramentas> Exportar para o WordPress. Baixe os arquivos WXR que contêm todos os seus posts e páginas de cada site. Veja as instruções sobre a Exportação Ferramentas SubPanel .

Verifique se o seu arquivo de exportação, na verdade tem todos os posts e páginas. Você pode verificar isso olhando para a última entrada do arquivo exportado usando um editor de texto. A última entrada deve ser o post mais recente.

Alguns plugins podem entrar em conflito com o processo de exportação, gerando um arquivo vazio, ou um arquivo parcialmente concluída. Para estar no lado seguro, você provavelmente deve desabilitar todos os plugins antes de fazer a exportação.

Também é uma boa idéia primeiro excluir todos os comentários de spam em quarentena como estes também serão exportados, tornando o arquivo desnecessariamente grande.

Nota: A configuração do widget e blog / plugin definições não são exportados neste método. Se você estiver migrando dentro de uma única conta de hospedagem, anote as configurações nesta fase, porque quando você excluir o domínio antigo, eles vão desaparecer.

2. Instale o WordPress 3.1.2

Instale o WordPress 3.1.2 para a raiz de seu diretório public_html. Tem que estar na raiz ou o recurso de multi-site não vai funcionar. Siga as instruções para instalar o WordPress no Codex.

3. Criar um subdomínio curinga

Criar um subdomínio curinga. Isto deve ser tão fácil como ir em seu web hosting painel de controle e criar um subdomínio chamado *. Se você não tiver certeza, pergunte ao seu host para obter ajuda.

4. Ativar multi-site

Ativar multi-site em seu WordPress 3.1.2 instalar. Isso envolve a edição wp-config.php um par de vezes. Você precisa usar o subdomínio, e não o subdiretório opção. Veja as instruções no códice sobre como criar uma rede .

5. Criar um blog de teste

Criar um blog de ​​teste no WordPress > superadmin Sites painel. Ele deve aparecer como subdomain.yourdomain.com. Teste o blog para se certificar que tudo está funcionando corretamente neste momento.

6. Instale o WordPress MU Domínio Mapeamento plugin

Instale o WordPress MU Domínio Mapeamento plugin . Folllow a configuração e instruções de instalação no readme.

7. Criar blogs para cada site que você deseja importar

Criar blogs para cada um dos sites que você deseja hospedar em domínios separados. Por exemplo importedblogdotorg.mydomain.com.

Nota: escolha o nome com cuidado, porque a mudança que provoca problemas de redirecionamento admin. Isto é particularmente importante se você estiver migrando um site na mesma conta de hospedagem.

8. Importação WXR arquivos para cada blog

Vá ao painel de cada blog, e importar o arquivo WXR exportados para cada blog. Mapa dos autores para os próprios usuários, ou criar novos. Certifique-se de marcar a caixa que irá puxar as fotos e outros anexos. Veja as instruções sobre Ferramentas de Importação SubPanel .

Observação: se você optar por importar imagens a partir do local de origem para o site de destino, certifique-se que tenham sido enviados para o local certo e são exibidos corretamente no respectivo post ou página.

9. Copie os arquivos do tema e plugin

Antes de começar, verifique os seus plugins vai trabalhar na instalação de rede. Se o plugin não é suportado, não instalá-lo. Encontrar alternativas adequadas para ele, procurando o plugin de função com “multi-site” ou mesmo “mu”, como em “social bookmarking wordpress plugin em vários locais”.

Copie o tema e plugin instala arquivos de seu antigo WP para seus respectivos diretórios no novo wp-content. Você pode ativar temas para a rede, ou você pode ir para o SuperAdmin> Sites, clique em Editar no local desejado e ativar um determinado tema para apenas esse site.

Observação: se você estiver usando um tema infantil, temas copiar o pai ea criança para o novo site.

10. Editar WordPress definições de configuração para cada site.

Edite a configuração configurações do widget, etc para cada site. Ao final desta etapa, cada local deve ser exatamente como fazia antes, apenas com a URL subdomain.yourdomain.com ao invés de sua URL, o final correto.

11. domínios Park em seu site principal

Parque de cada um dos seus nomes de domínio em seu site principal. Você pode fazer isso facilmente no cPanel. Se você estiver usando os domínios como domínios add-on, então você precisa apagar o add-on domínios de primeiro, e depois criar os domínios estacionados.

Os domínios que você deseja parque deve ser apontado para os servidores de nomes do seu provedor de hospedagem.

12. Mapa dos domínios

Em superadmin> Sites, encontre o ID do novo site.

Então, vá para Domínios superadmin>, e mapear o ID do novo site com o nome de domínio publicamente visíveis.

Para redirecionar example.com para www.example.com, criar dois mapeamentos, fazendo o mapeamento www.example.com “primária”.

Problemas Potenciais

Limitações de configuração do PHP

Você pode ter problemas com a configuração do PHP em seu servidor. Há dois problemas em potencial. Uma delas é que o PHP é max_upload_size será muito pequeno para o arquivo WXR. O outro problema é que o limite de memória pode ser pequena demais para importar todos os posts.

Existem algumas maneiras de resolvê-lo. Uma delas é pedir ao seu provedor de hospedagem para até os limites, ainda que temporariamente. O outro é para colocar um php.ini arquivo no seu /wp-admin/ e /wp-includes diretórios que levanta os limites para você ( php.ini arquivos não são recursivas, por isso tem que ser nestas listas). Algo como uma 10 MB de limite de upload e limite de 128 MB de memória deve funcionar, mas verifique com seu provedor de hospedagem primeira para que você não violam os termos de seu contrato.

Busca no WordPress fóruns de suporte para obter ajuda com problemas de configuração do PHP.

Convertendo domínios add-on para domínios estacionados

Excluindo domínios add-on no cPanel e substituindo-os domínios estacionados também irá apagar qualquer despachantes e transitários domínio de e-mail associado a esses domínios. Esteja atento a isso, para que você possa restaurar os transitários uma vez que você fez a mudança.

Limitações da importação de usuários

Como não é o caminho acima para importar o conteúdo em uma instância do blog vários sites, você está executando em problemas enormes, quando começa a importar vários usuários. Usuários são gerados durante a importação, mas você não terá qualquer função ou informações adicionais para o novo blog.

Perdendo configurações

Se o site antigo não está mais disponível e você que se esqueceu de copiar alguma configuração ou se você quiser ter certeza de que configurou tudo corretamente, execute uma pesquisa no Google para o seu site e clique para ver a versão em cache. Esta opção só está disponível até o seu novo site foi rastreado, então é melhor você ser rápido.

Esta página é marcada como incompleta. Você pode ajudar a pelo Codex expandindo-o .
Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.
27 abr
Em: WordPress

Separando Categorias

Seus posts são arquivados em diferentes categorias. Categoria freqently informação é exibida na seção de pós metadados perto do seu post ou sob o título de posição . Diferentes WordPress Temas destacar o post meta seção de dados em diferentes áreas.

A exibição das categorias post é gerada através do uso da the_category () template tag. E você tem a habilidade de estilo como essas categorias são exibidas.

Encontrando seu Tag Categorias

A colocação de sua marca categorias podem estar em um lugar na primeira página e em um ou mais lugares diferentes na sua página único post, assim você pode ter que fazer alguma caça para encontrar suas marcas diversas categorias. Você pode também querer um estilo diferente dos outros, mas você ainda tem para encontrá-los.

A meta dados de postagem que caracteriza sua marca categorias em seu tema é normalmente encontrado no index.php , single.php , ou às vezes no sidebar.php arquivos de modelo . Abrir um ou mais desses arquivos template e procure por:

<!--?php the_category() ?-->

Depois de tê-lo encontrado, ter um outro olhar uma página da Web gerado do seu site e determinar como exatamente você pode querer mudar esta informação.

O the_category () template tag instrui o banco de dados para obter as informações sobre as categorias de pós e exibi-lo naquele ponto em seu arquivo de modelo . Por padrão, ele exibe a lista de categorias com um espaço entre cada uma. Você pode mudar isso adicionando o parâmetro dentro da tag. Vamos começar com separadores simples, jogando com os nomes das categorias: WordPress , Informática e Internet News .
Separadores Simples

Se você gostaria de ter vírgulas entre as categorias, a marca deve ler-se:

<!--?php the_category(',') ?-->

Ai ficaria assim:

WordPress, Informática, Internet News

<!--?php the_category('-->')?&gt;

Fica assim :

Computadores WordPress>> Notícias da Internet

Se você gostaria de ter uma bullet , a tag ficaria assim:

<!--?php the_category(' &bull; ') ?-->

Se você gostaria que o “pipe” (|) entre as categorias, a tag ficaria assim:

<!--?php the_category(' | ') ?-->

Se você gostaria de ter uma flecha, a tag ficaria assim:

WordPress | Computers | Internet News

Adicionando texto ao Categorias

Gostaria de fazer a sua meta dados pós olhar um pouco mais textual , informal e parte de um parágrafo, em vez de uma lista. Você pode adicionar um “and” ir entre as categorias como:

You can read related subjects in
the <!--?php the_category(' and ') ?--> categories.

Você pode ler assuntos relacionados no WordPress e Computadores e Internet News categorias.

Ou você pode dar-lhes mais de uma opção e mudar a “and” para um “or” :
Você pode ler assuntos relacionados no WordPress ou computadores ou Internet News categorias.

As possibilidades são infinitas. Divirta-se e use sua imaginação!

Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.
20 abr
Em: WordPress

Como criar um plugin para WordPress

O que é um plugin WordPress?

Um plugin WordPress é um programa, um conjunto de uma ou várias funções, escrito em PHP e que adiciona recursos ou serviços específicos ao WordPress através de sua API. Logo melhoramos funcionalidades, estendemos a capacidade do WordPress ao limite da nossa imaginação através de pequenas aplicações ou complexos sistemas.

Estrutura de um plugin WordPress

Nome de plugins

O nome do plugin a ser criado precisa ser único e descritivo. É aconselhável consultar o diretório de plugins WordPress para verificar se o nome escolhido realmente é único; outra opção é fazer uma busca no Google utilizando como termo da pesquisa o nome desejado.

Os nomes de plugins, em sua maioria, descrevem sua utilidade. Ou seja, utilize no nome do plugin algo que o descreva, que diga o que ele faz. O nome do plugin pode conter várias palavras. Por exemplo, “Desenvolvimento de Plugins WordPress” é um nome válido, único e descritivo para um plugin.

Arquivos de plugin

Uma vez escolhido o nome do plugin, podemos nomear os arquivos relacionados. No exemplo acima, o nome do plugin foi “Desenvolvimento de Plugins WordPress”. Logo, o nome do arquivo pode ser “desenvolvimento-de-plugins-wordpress.php”.

Um plugin WordPress precisa ter no mínimo um arquivo PHP, que deverá ser nomeado assim como o nome dos plugins. Ou seja, com um nome único. Todos plugins são armazenados num mesmo diretório; com nomes únicos eles não conflitam e não se sobrescrevem.

Seu plugin pode conter diversos arquivos JavaScript, CSS, PHP, pastas, imagens, entre outros. Se este for o seu caso, crie uma pasta com um nome único e armazene todos os arquivos dentro dela. Por exemplo, desenvolvimento-de-plugins-wordpress/desenvolvimento-de-plugins-wordpress.php.

Todos os plugins WordPress são armazenados sob o diretório /wp-content/plugins/. Veja um exemplo:

API de plugin do WordPress

Até a versão 1.2 do WordPress era necessário editar seus códigos fonte a fim de realizar alguma modificação; tal modificação era conhecida como “hacks”. Dessa versão em diante é possível acrescentar funcionalidades e alterar comportamentos padrão sem editar uma linha do CORE do WordPress.

A API de plugins do WordPress é conhecida como “Hooks”; ganchos em tradução livre. Além de serem conhecidas, também, como “Filters” e “Actions”, Filtros e Ações respectivamente. Através desses ganchos, o WordPress permite que seu plugin execute funções em determinados momentos e coloca seu plugin literalmente em ação.

Nota:

Uma lista, não oficial, com todas “Actions” e “Filters” do WordPress está disponível em Adam Brown’s WP Hooks Database. As listas oficionais para as Actions e Filters são respectivamente http://codex.wordpress.org/Plugin_API/Action_Reference e http://codex.wordpress.org/Plugin_API/Filter_Reference

Como dito anteriormente, há dois tipos de “hooks” (ganchos), vamos conhecê-los:

Actions (Ações)

Seu plugin pode executar uma ou várias funções em momentos específicos em que o WordPress executa determinados códigos ou quando algum evento ocorre.

As Actions permitem que você altere o funcionamento do WordPress ou responda a certos eventos sem editar o código fonte do sistema.

Imagine a cena: você edita o código padrão do WordPress. Certamente você irá atualizá-lo quando lançarem novas versões. Logo, sua modificação foi sobrescrita, perdida. Com os plugins isso não ocorre e é mais elegante.

Um exemplo claro de uso das Actions é postar um Tweet quando um post for publicado. Isto é, criamos uma função e vinculamos ela ao evento “publicar post”. Respondemos a um evento (publicar post) do WordPress com uma função com determinado objetivo (postar um tweet).

Filters (filtros)

Textos e imagens, por exemplo, são constantemente adicionados ao banco de dados ou enviados para a tela do navegador de internet. Seu plugin pode executar uma ou várias funções para modificar esses conteúdos.

Suas funções receberão dados sem modificações ou não, dependendo se outro plugin já tiver filtrado tais dados, e retornará os dados com as modificações desejadas. Há dois pontos a serem considerados: em alguns casos, sua função poderá retornar “null” (vazio) indicando que o dado foi excluído ou desconsiderado. Outro ponto é retornar o dado bruto caso sua função não o modifique para que outro plugin o receba e faça o que tiver de ser feito.

“Actions” (Ações)

Falamos anteriormente que através das Actions podemos responder um evento do WordPress executando uma função ou então executá-la em determinados pontos em que os códigos do WordPress são executados.

Veremos agora como funciona esse mecanismo, isto é, como registrar uma função em nosso plugin para esse propósito. Os passos são simples:

  1. No arquivo do plugin crie uma função que será executada junto a algum evento do WordPress;
  2. Registre sua função em algum Hook do tipo Actions utilizando a função add_action();
  3. Ative o plugin.

Observe um exemplo prático.

Arquivo:

nome-do-arquivo-do-plugin-actions.php

Armazenado em:

/wp-content/plugins/

<?php
/*
Plugin Name: Nome do plugin
Plugin URI: http://...
Description: O que plugin faz.
 
Author: Leandro Vieira Pinho
Version: 1.0
Author URI: http://leandrovieira.com/
*/
 
function imasters_pro_url_after_login()
{
    global $redirect_to;
    if ( !isset( $_GET['redirect_to'] ) )
        $redirect_to = 'http://pro.imasters.com.br/treinamentos/';
}
 
add_action( 'login_form', 'imasters_pro_url_after_login' );
?>

O arquivo acima é um plugin WordPress. Sim, com poucas linhas e super simples. É muito fácil mesmo.

No exemplo acima criamos um plugin para responder um evento do WordPress, neste caso, o momento em que o formulário de login é manipulado. A intenção é definir um valor para a variável $redirect_to, caso não exista o parâmetro de URL redirect_to. Essa variável armazena uma URL utilizada para redirecionar o usuário após sua autenticação.

A função add_action(), utilizada para registrar uma função aos hooks do WordPress, aceita quatro parâmetros sendo dois requeridos e dois opcionais. Veja:

add_action ( 'nome_gancho', 'nome_funcao', [prioridade], [parâmetros aceitos] );

nome_gancho

O nome do gancho, do tipo Action, disponibilizado pelo WordPress que associa o evento desejado à sua função.

nome_funcao

Nome da função que será executada em associação ao nome do gancho informado. Essa função pode ser padrão do PHP, nativa do WordPress ou criada por você mesmo. Em nosso exemplo acima, criamos uma função chamada imasters_pro_url_after_login.

prioridade

Esse parâmetro é opcional. Define a ordem de prioridade em que a função deve ser executada. Esse parâmetro deve ser um valor inteiro (um número); o padrão é 10. Funções com o mesmo valor de prioridade serão executadas na ordem que foram adicionadas à Action.

parâmetros aceitos

Esse parâmetro é opcional. Define quantos parâmetros sua função aceitará. Esse parâmetro deve ser um valor inteiro (um número); o padrão é 1. Esse parâmetro é utilizado junto a alguns ganchos uma vez que eles passam mais de um parâmetro.

Como percebemos neste artigo, criar um plugin para WordPress é simples e muito fácil a partir do momento em que você conhece a estrutura da API do WordPress, a forma como ele lida com os plugins e algumas outras particularidades. No treinamento Desenvolvimento de Plugins e Temas para WordPress vamos conhecer toda lógica, melhores práticas e criaremos plugins a partir do zero.

Criador.

Leandro Vieira

Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.
20 abr
Em: WordPress

Personalizando o Loop

Para quem desenvolve em WordPress o mais importante é entender como funciona o loop, a estrutura responsável por carregar os posts no WordPress. Ele funciona em todos os templates do tema, por isso é tão importante. O que alimenta a consulta do loop são os parâmetros passados no endereço do site, carregados cronologicamente por padrão.

Por exemplo: Ao acessar o endereço http://www.dominio.com/?cat=1, estaremos passando para o loop cuja categoria é igual a 1, assim, o loop irá carregar os posts que estejam dentro dessa categoria apenas.

Todos os resultados obtidos com a consulta são armazenados em um array chamado $posts e a cada volta do loop a chave do array é incrementada. Dessa forma, precisamos somente de uma estrutura de repetição que monte o conteúdo de cada post dentro da nossa interface. Para facilitar ainda mais, o WordPress disponibiliza duas funções que fazem quase todo o trabalho para nós, são elas:

have_posts(), que verifica se ainda existem posts no array; e
the_post(), que carrega os dados do post da vez.

A estrutura mais utilizada nos temas do WordPress é:

<?php while(have_posts()) : the_post(); ?>
trecho da interface a ser repetido...
 <?php endwhile; ?>

Traduzindo para o programês, ficaria assim:

<?php enquanto(houverem_posts()) : carregue_o_post_da_vez(); ?>
trecho da interface a ser repetido...
<?php verifique_se_ainda_há_posts; ?>

Dentro do loop estarão disponíveis os atributos do post da vez, esses atributos podem ser acessados utilizando as funções the_title(), the_permalink(), the_content(), para citar algumas. Sabendo disso, para montar um template que mostre o título, o autor e a data de publicação de um post precisaríamos simplesmente adicionar as respectivas funções nos locais apropriados. Segue mais um exemplo:

<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="data"><?php the_time(); ?></p>
<p class="autor"><?php the_author(); ?></p>
<?php endwhile; ?>

Personalizando

Após entender como o Loop funciona, já podemos começar a brincar com o WordPress controlando o conteúdo a ser carregado ou filtrado. Mais uma vez o WordPress facilita a vida dos desenvolvedores disponibilizando a função query_posts().

Essa função permite criar parâmetros de consulta ou adicionar novos parâmetros aos passados via endereço do navegador, dessa forma você pode excluir uma categoria da pesquisa, reordenar os posts, limitar a quantidade de resultados, entre outras coisas.

O funcionamento do query_posts é simples, apenas adicione a função ‘query_posts(‘args’)’ antes da função ‘have_posts()’ substituindo o args pelos argumentos desejados à sua consulta. Dessa forma o ‘have_posts()’ irá ignorar os parâmetros passados pelo endereço e fará uma consulta baseada nos dados informados. Por exemplo, se você quer listar três posts aleatórios da categoria ‘destaques’, o script seria assim:

<?php query_posts("&orderby=rand&showposts=3&category_name=destaques"); ?>
<?php while(have_posts()) : ?>
trecho da interface a ser repetido...
<?php endwhile; ?>

Note que cada atributo é separado pelo & assim como nos parâmetros passados via url. Dessa forma os desenvolvedores se sentem mais familiarizados com o código e não precisam ficar decorando a ordem dos atributos nem se preocupar em anular os que não serão usados.

Caso a sua intenção seja apenas filtrar os resultados de uma busca, adicione a variável ‘$query_string’ à sua função query_posts, dessa forma o WordPress mescla os seus argumentos com os argumentos da página. Essa variável é muito importante quando você pretende manter a navegabilidade, como é o caso dos resultados de uma pesquisa ou do conteúdo da página inicial do site. Para exemplificar, segue como seria o script para retirar uma categoria dos resultados de uma pesquisa:

<?php query_posts("{$query_string}&cat=-3"); ?>
<?php while(have_posts()) : ?>
trecho da interface a ser repetido...
<?php endwhile; ?>

Esse script deve ficar no arquivo search.php, então os posts encontrados na categoria 3 não aparecerão nos resultados das pesquisas e a paginação dos resultados continuará funcionando.

Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.
20 abr

Adicionando bibliotecas javascript ao seu tema ou plugin WordPress

Normalmente quando desenvolvemos um tema ou um plugin, sentimos a necessidade de utilizar alguma biblioteca em javascript para facilitar a realização de determinada tarefa. A maneira mais fácil é, sem dúvida, utilizando a tag ‘<script>’ no corpo do seu arquivo. Agora imagine que todos os desenvolvedores que utilizam jquery resolvam adicionar as chamadas à biblioteca no corpo de seus plugins. Usuários que possuam vários plugins ativos provavelmente terão uma baita dor de cabeça, mais cedo ou mais tarde, quando esses plugins causarem algum conflito.

Como não podia deixar de ser, o WordPress já tem uma solução para os nossos problemas. Uma função chamada ‘wp_enqueue_scripts’, que é responsável por enfileirar e ordenar a chamada das bibliotecas, evitando assim a duplicação de arquivos e possibilitando o carregamento das dependências antes.

A primeira coisa que você deve fazer é registrar a biblioteca para que o WordPress saiba que ela existe. Isso deve ser feito utilizando a seguinte função:

wp_register_script($handle, $src, $deps = array(), $ver = false)

O parâmetro obrigatório ‘$handle’ é o identificador único da biblioteca, o nome pelo qual o WordPress saberá quem é quem no conjunto de bibliotecas disponível. Em seguida vem o ‘$src’, que informa o endereço do arquivo, também obrigatório. Caso esse arquivo tenha alguma dependência, esta deve ser informada em ‘$deps’ no formato de array, onde cada item do array é uma dependência a ser satisfeita. Essas dependências são informadas pelo ‘$handle’ das respectivas dependências. E por último (e menos importante) ‘$ver’ é a versão do script.

Não é possível registrar um script que já esteja registrado. Caso você tente, seu script será ignorado. Mas se for realmente necessário, você pode remover um script anterior para adicionar o seu. Isso pode acontecer quando você desenvolve para versões mais antigas do WP. Para remover um script utilize:

wp_deregister_script($handle)

Onde ‘$handle’ é o identificador do script que você deseja remover.

Depois de definidos os scripts e suas dependências, você deve informar quais scripts devem ser carregados e onde eles serão carregados. Para a primeira questão, use:

wp_enqueue_script($handle, $src = false, $deps = array(), $ver = false)

Apesar de todos os parâmetros dessa função, o único obrigatório é o ‘$handle’ que informa qual o script será carregado. Os outros parâmetros são exatamente iguais aos parâmetros do wp_register_script e funcionam da mesma forma. A resposta pra isso é que se o script definido pelo $handle não estiver registrado, o WordPress utiliza o atual.

Pronto! Agora só falta informar onde o script deve ser carregado. Nos temas, basta colocar a chamada ‘wp_queue_script’ no template onde a biblioteca será utilizada e o ‘wp_head’ faz o resto. Assim, se você pretende usar a biblioteca jquery nos resultados das buscas, adicione ao search.php a linha:

<?php wp_enqueue_script('jquery'); ?>

Já na área administrativa você precisa criar uma função que carregue o script e adicioná-la à ação ‘init’, por exemplo:

function load_scripts()
{
wp_enqueue_script('jquery');
}
 
add_action('init', 'load_scripts');

É isso. Essa explicação também se aplica aos estilos, você só precisa mudar as funções para ‘wp_register_style’, ‘wp_deregister_style’ e ‘wp_enqueue_style’, respectivamente. E para conferir os scripts e estilos que o WordPress carrega por padrão, confira o arquivo script-loader.php na pasta wp-includes.

Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.
19 abr
Em: WordPress

Criando meta boxes no WordPress

A versão 2.7 o WordPress trouxe as meta boxes, que são aquelas caixinhas arrastáveis que estão presentes 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 de plugins que interagem com os posts ou páginas, é necessário adicionar um novo campo à área de edição. A fim 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 meta boxes às páginas dos seus plugins, mas é uma tarefa um pouco mais complicada, então vamos deixar para outro artigo.

add_meta_box($id, $title, $callback, $page, $context=’advanced’, $priority=’default’, $callback_args=null);

Essa função é a responsá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 meta box. Já o $title é o título da meta box, $callback é a sua função que ficará responsável pelo carregamento do conteúdo dentro da meta box, e $page é a página onde a sua meta box será carregada (‘page’, ‘post’, ‘link’, etc). Os outros parâmetros são opcionais: $context define o local da página onde sua meta box será carregada por padrão (‘normal’, ‘advanced’, ‘side’) enquanto $priority diz o posicionamento padrão da meta box dentro do $context (‘high’ ou ‘low’), e por fim $callback_args que permite a passagem de argumentos à meta box.

Por exemplo, para criar uma meta box 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:

add_meta_box('incentivador', 'Incentivador', 'incentive_me', 'post', 'side', 'high');

Não se esqueça de criar a função ‘incentive_me’ em seu plugin.

Agora só falta adicionar um gancho para a chamada da meta box:

add_action('do_meta_boxes', 'incentivador_metabox');

Onde ‘incentivador_metabox’ é a função que conterá o seu add_meta_box.

O código final ficaria assim:

<!--?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)]; } ?-->

Para saber mais acesse a Referência da Função add_meta_box

Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.
19 abr
Em: WordPress

10 novas dicas, truques e hacks para WordPress

A cada dia, o WordPress torna-se o melhor CMS do mundo. Depois de ter sido anunciado que todos os blogs do Windows Live Writer passarão, nos próximos seis meses, para o WordPress, voltamos à carga com 10 novas dicas para WordPress que você poderá usar sem restrições para otimizar ao máximo seu blog. Conforme referido pelos amigos do CatsWhoCode, regularmente estão saindo novos hacks e truques para explorar ao máximo as potencialidades no seu blog WordPress.

Tome nota das 10 novas dicas para WordPress que temos para você:
1. Remova a auto-linkagem nos comentários

Se alguém deixar um comentário em seu blog com um URL, esse URL será automaticamente transformado num link pelo WordPress. Embora isso possa ser útil, haverá certamente muitos usuários que não gostam de ver os links nos seus comentários.

Remover a auto-linkagem é na verdade muito simples. Copie e cole o código seguinte no seu arquivo functions.php. Assim que você salvá-lo, você irá reparar que os auto-links foram todos removidos.

remove_filter('comment_text', 'make_clickable', 9);

2. Notifique seus usuários de novas postagens

Se você estiver em um blog privado em WordPress, talvez seja interessante notificar seus usuários quando você publicar um novo conteúdo. Essa dica faz com que o WordPress verifique todos os endereços de e-mail de seus usuários na base de dados e envia-lhes automaticamente um e-mail sempre que você publicar uma nova postagem.

Obviamente, você não deverá colocar essa opção em seu blog, dado que o usuário não tem como remover a subscrição de e-mail, tornando-se, por ventura, um ato de spam exagerado e indesejável. Tenha cuidado na abordagem que faz.

function email_members($post_ID)  {
    global $wpdb;
    $usersarray = $wpdb->get_results("SELECT user_email FROM $wpdb->users;");
    $users = implode(",", $usersarray);
    mail($users, "Nova postagem online!", 'Foi publicada uma nova postagem em http://www.wordpress-love.com');
    return $post_ID;
}
 
add_action('publish_post', 'email_members');

3. Datas em formato Twitter

Mostrar as suas datas num formato “há 5 dias” está se tornando muito popular nos blogs graças ao Twitter.

Existem muitas dicas complexas para conseguir fazer isso em blogs WordPress, no entanto, poucos sabem que o próprio WordPress tem uma funcionalidade interna para fazer algo parecido: human_time_diff().

Basta copiar e colar o seguinte código no loop das suas postagens, e ele irá mostrá-las num formato tipo Twitter.

Posted <?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?>

4. Mostrar thumbnails (miniaturas) nos RSS feeds

Introduzida no WordPress 2.9, a funcionalidade the_post_thumbnail() é muito útil para mostrar uma imagem de thumbnail (miniatura) anexada às suas postagens. Infelizmente, não existe nenhuma forma integrada no WordPress para fazer com que você possa mostrar esses thumbnails nas suas postagens de RSS feed.

Felizmente, a função seguinte consegue resolver esse problema. Copie e cole-a no seu arquivo functions.php, guarde-o, e os seus thumbnails irão começar a ser mostrados nos seus RSS feed.

function diw_post_thumbnail_feeds($content) {
    global $post;
    if(has_post_thumbnail($post->ID)) {
        $content = '<div>' . get_the_post_thumbnail($post->ID) . '</div>' . $content;
    }
    return $content;
}
add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');
add_filter('the_content_feed', 'diw_post_thumbnail_feeds');

5. Bloqueie pedidos externos

Originalmente, o WordPress faz pedidos externos para indicar a certos serviços que o seu blog está atualizado e também para carregar as informações do WordPress news que são mostradas no seu painel de controle. Pessoalmente, as notícias do WordPress não me interessam muito, dado que sigo todas elas nos canais da empresa, mas remover esses pedidos externos pode ser uma mais-valia. Adicione simplesmente a seguinte linha de código a seu arquivo wp-config.php:

define('WP_HTTP_BLOCK_EXTERNAL', true);

Se precisar de aceitar alguns pedidos externos, você pode criar uma lista de permissões:

define('WP_ACCESSIBLE_HOSTS', 'rpc.pingomatic.com');

Essa linha de código tem de ser colada igualmente no seu arquivo wp-config.php.
6. Modo debug fácil

Quando as coisas correm mal, você pode sempre recorrer à super útil ferramenta de debug do WordPress, WP_DEBUG. Originalmente, você tem de colar uma linha de código em seu arquivo wp-config.php para tornar o modo debug disponível.

Se você necessitar acessar de forma fácil o modo debug, mesmo quando seu site está online, você deverá editar seu arquivo wp-config.php e substituir:

define('WP_DEBUG', true);

por:

if ( isset($_GET['debug']) && $_GET['debug'] == 'debug')
  define('WP_DEBUG', true);

Depois de feito, adicione simplesmente um parâmetro GET ao seu URL da página onde pretende colocar o debug. Exemplo:

http://www.wordpress-love.com/sobre?debug=debug

Por razões óbvias de segurança, você deverá dar um nome ao “debug” diferente, de forma que ninguém possa colocar seu blog em modo debug também.
7. Usar shortcodes em arquivos de template

Os WordPress shortcodes são uma excelente forma de você adicionar conteúdos do tipo rss feeds, google maps, galerias, entre outros, nos seus posts ou páginas. Mas que tal colocar shortcodes diretamente a partir do seu template?

Existe uma função integrada ao WordPress, mas a grande maioria dos usuários nunca ouviu falar dela. A função chama-se do_shortcode().

do_shortcode('
');

8. Permitir o upload de mais tipos de arquivos

Se você alguma vez tentou carregar arquivos não muito comuns como os Textmate .tmCommand no seu blog WordPress, provavelmente teve como resultado um erro, porque na verdade o WordPress não aceita esse tipo de arquivos.

Felizmente, você pode acrescentar novos tipos de arquivos às listagens permitidas pelo WordPress. Fazê-lo é muito fácil. Copie e cole o seguinte código no seu arquivo functions.php, e está feito. Note, no entanto, a forma como separamos os diferentes tipos de arquivos.

function addUploadMimes($mimes) {
    $mimes = array_merge($mimes, array(
        'tmbundle|tmCommand|tmDragCommand|tmSnippet|tmLanguage|tmPreferences' => 'application/octet-stream'
    ));
    return $mimes;
}
add_filter('upload_mimes', 'addUploadMimes');

9. Shortcode para visualizador de PDFs do Google Docs

O Google Docs é uma excelente forma de ler arquivos .pdf, .doc ou .xls online. Portanto, se você desejar partilhar um arquivo PDF com seus leitores, que tal criar um shortcode para esse PDF em vez de forçar o download?

Copie e cole a seguinte função em seu arquivo functions.php.

function pdflink($attr, $content) {
    return '<a href="http://docs.google.com/viewer?url=' . $attr['href'] . '">'.$content.'</a>';
}
add_shortcode('pdf', 'pdflink');

Assim que guardar o arquivo, poderá usar o shortcode nos seus posts e em suas páginas. Eis a sintaxe:

[pdf href="http://seusite.com/linkpara/ficheiro.pdf"]Ver PDF[/pdf]

10. Detectar browser do usuário via WordPress

Este truque não é tão novo quanto os outros, mas é um dos mais engraçados. O que esse código faz concretamente é detetar o nome do browser do visitante e adicioná-lo à função body_class().

Dessa forma, você pode corrigir bugs que seu blog tenha em browsers específicos. Essa função tem de ser copiada e colada no seu arquivo functions.php.

add_filter('body_class','browser_body_class');
function browser_body_class($classes) {
    global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone;
 
    if($is_lynx) $classes[] = 'lynx';
    elseif($is_gecko) $classes[] = 'gecko';
    elseif($is_opera) $classes[] = 'opera';
    elseif($is_NS4) $classes[] = 'ns4';
    elseif($is_safari) $classes[] = 'safari';
    elseif($is_chrome) $classes[] = 'chrome';
    elseif($is_IE) $classes[] = 'ie';
    else $classes[] = 'unknown';
 
    if($is_iphone) $classes[] = 'iphone';
    return $classes;
}

bons truques!

Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.
19 abr
Em: WordPress

Template com suporte a multi-idiomas no WordPress

Uma das funcionalidades não inerentes ao WordPress é o suporte multi-idiomas (ou multilíngua). Existem alguns plugins capazes de efetuar essas traduções, mas a grande maioria trabalha com traduções automáticas, fazendo com que os seus textos pareçam mais um idioma extraterrestre do que propriamente uma língua fluente mundial. É importante, portanto, tentar traduzir o seu template WordPress em multi-idioma, de uma forma eficiente e funcional. Os colegas do CatsWhoCode realizaram uma seleção de informação interessante sobre o assunto, e o resultado é o seguinte:

1. Adicionar as funcionalidades necessárias

Vamos começar pelo básico: Copie e cole o seguinte código no seu arquivo functions.php.

load_theme_textdomain( ‘WordPressLove’, TEMPLATEPATH.’/languages’ );

$locale = get_locale();
 
$locale_file = TEMPLATEPATH."/languages/$locale.php";
if ( is_readable($locale_file) )
require_once($locale_file);

Na primeira linha, poderá ver a funcionalidade load_theme_textdomain(). Esta função permite carregar um Domínio de Texto. Poderá escolher qualquer nome, mas tenha noção de que deverá ser único. A melhor prática será seguramente utilizar o nome do seu template.
2. Internacionalize o seu template

Para traduzir o nosso template WordPress, iremos utilizar as funções PHP de gettext.

O GetText tem duas funções: _e e __ (dois underscores).

A função “_e” é utiliza para imprimir texto “simples” e a função “__” é utilizada quando texto já se encontra envolvido em tags PHP.

<!--?php _e("A página que procura não se encontra aqui", "WordpressLove"); ?-->
<!--?php the_content(__('Leia Mais', "WordpressLove")); ?-->

Veja novamente que o domínio de texto (WordPressLove) deverá ser o mesmo contido no arquivo functions.php.

A parte mais chata é que você terá de substituir cada string pela função requerida. Dependendo do número de strings que o seu template tem, este processo pode requerer algum tempo.
3. Crie seu arquivo .PO

Agora, o seu template WordPress pode ser facilmente traduzido para qualquer língua. Mas, para apresentar textos em outra língua, é necessário adicionar um ficheiro .po.

Os arquivos .po significam Portable Object. Basicamente, eles contêm uma string e a sua tradução numa outra língua. Por exemplo, ao fazer o download da versão Francesa do WordPress, você terá um arquivo fr_FR.po nos seus arquivos. Ele contém todas as traduções necessárias para o seu template falar Francês, pelo que o seu tema irá seguramente dizer Bienvenue ao invés de Bem Vindo.

As boas notícias são que você não terá de pesquisar pelos arquivos do seu template à procura de todas as strings que são necessárias traduzir. Uma ferramenta online gratuita, icanlocalize.com, tem capacidade de “scannar” arquivos PHP e criar os .po por si. O ICanLocalize irá extrair todas as strings envolvidas nas chamadas __(“txt”, “domínio”) e _e(“txt”, “domínio”). As strings podem ser envolvidas também entre aspas (“) ou citações singulares (‘) e com qualquer caracter de codificação.

Os arquivos .PO podem ser editados com o software PoEdit, especialmente dedicado a esta função:

Como provavelmente você já adivinhou, será necessário traduzir cada uma das strings. Depois de traduzir todas, guarde o seu arquivo .po. O PoEdit irá gerar também um ficheiro .mo, que é basicamente uma versão compilada do ficheiro .po.

4. Implementação

Agora, você terminou a parte mais “difícil” do trabalho. A única que precisa fazer é definir a localização do seu WordPress. Para isso, a primeira coisa é conseguir o seu código de língua e país. Por exemplo, se a sua língua é Francês e França é o seu país de residência, o seu código será fr_FR. Para Portugal falamos em pt_PT e para o Brasil de pt_BR.

Depois de ter os seus códigos, abra o seu ficheiro wp-config.php e procure pela constante WPLANG. Se ela existir, simplesmente substitua o código atual pelo seu. Se não existir, simplesmente cole a seguinte porção de código (com o seu código claro):

define ('WPLANG', 'fr_FR');
Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.
19 abr
Em: WordPress

Conheça a utilidade das funções wp_head e wp_footer nos temas WordPress

wp_head e wp_footer são ganchos destinados ao cabeçalho e ao rodapé de um tema, respectivamente. Muitos plugins fazem uso desse gancho, assim como o próprio WordPress. Logo, incluí-los em seu tema é relevante e garante uma melhor integração.

wp_head

O wp_head é inserido entre as tags <head></head>. A sugestão é que seja antes da tag de fechamento, ou seja Observe:

...
<head>
...
<?php wp_head(); ?>
</head>

w_footer

Já o wp_footer é inserido antes do fechamento da tag , logo veja como usá-la:

...
<?php wp_footer(); ?>
</body>
</html>

Considere o uso de ambos os ganchos em seus temas e facilite a integração de plugins e outros recursos do WordPress que só funcionam junto a eles.

Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, co-organizador do belo horizonte WordPress group, uma comunidade de WordPress em Belo Horizonte, é também fundador do daviwp.com aqui compartinho conhecimentos para toda galera aficionada em WordPress.