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.
19 abr
Em: WordPress

10 formas de criar uma versão mobile do seu site WordPress

O mercado de acesso Mobile é cada vez maior. Milhões de pessoas já visualizam sites e blogs através do seu iPhone ou através de um outro  smartphone que tenham. Diante disso, é muito importante que você crie uma versão mobile do seu blog WordPress. A grande maioria dos sites e dos blogs de topo já têm as suas versões Mobile, mas existem também centenas ou milhares de outros sites e blogs que ainda não têm uma versão Mobile dos seus projetos. Os colegas do wpbeginner  falaram de algumas ferramentas interessantes e, neste artigo, vamos partilhar diferentes formas de criar uma versão Mobile do seu blog WordPress para seus usuários.

01. Mobify

O Mobify é um serviço gratuito que lhe permite criar versões Mobile de blogs WordPress, Drupal, entre outros. O sistema suporta iPhone, Android, BlackBerry e cerca de 5000+ outros dispositivos. Grande marcas mundiais como MTV, Sitepoint, Boingboing, Smashingmagazine, Discover Magazine e outras utilizam os serviços da Mobify.

02. Mofuse

O Mofuse oferece uma versão gratuita para a construção de blog Mobile para vários dispositivos, incluindo iPhone, Android, Blackberry e outros. Grandes blogs como Mashable, Readwriteweb e Makeuseof usam o Mofuse. O Mofuse mostra os seus RSS Feeds aos usuários. A sua versão gratuita não oferece grande liberdade, mas é suficiente para criar um produto de qualidade.

03. WPTouch

O WPTouch é uma plugin/template mobile para o seu blog WordPress. Ele transforma automaticamente o seu blog WordPress numa experiência web quando visto num iPhoneTM, iPod touchTM, AndroidTM, ou BlackBerry StormTM sensível ao toque. O WPTouch tem um excelente painel de opções administrativas.

04. WPTap

O WPTap oferece templates gratos e pagos que lhe permitem mostrar uma versão Mobile do seu blog quando ele é acessado via celulares touchscreen como iPhone, iPod Touch, Android e Blackberry. Ele é compatível com plugins WordPress que podem ser usados com versões mais antigas. Este plugin deixa o seu tempalte original como ele é, e apenas mostra a versão Mobile quando o seu blog é acessado por um smartphone/touch.

05. WordPress Mobile Pack

O WordPress Mobile Pack é um pacote completo que lhe permite tornar o seu blog WordPress numa versão Mobile. Ele inclui um switch que lhe permite selecionar templates baseados no tipo de usuário que visita o seu blog, uma seleção de templates mobile, extra widgets, adaptação ao dispositivo e um painel administrativo mobile que permite aos usuários editarem o site ou escreverem novas postagens quando desejarem.

06. MobilePress

O MobilePress é um plugin gratuito WordPress que torna o seu blog WordPress amigo dos celulares. O MobilePress permite-lhe também criar templates customizados para diferentes utilizações e browsers mobile como iPhone, Opera Mini e Windows Mobile.

07. WordPress para iPhone

A aplicação oficial para iPhone permite-lhe escrever postagens, carregar fotos, editar páginas, e gerir comentários no seu blog a partir do seu iPhone ou do iPod Touch. Com suporte para WordPress.com e WordPress.org (2.7 ou superior), os usuários podem usar o WordPress para iPhone muito facilmente.

08. WordPress para BlackBerry

A aplicação oficial do WordPress para BlackBerry permite-lhe escrever postagens, carregar fotos e vídeos, editar páginas e gerir comentários. Este plugin é compatível com blogs WordPress.com e WordPress.org (2.7 ou superior).

09. WordPress para Android

A aplicação oficial do WordPress para Android é uma aplicação Open Source que lhe permite escrever novas postagens, editar conteúdos e gerir comentários com notificações integradas.

10. WordPress Mobile Edition

O WordPress Mobile Edition é um plugin da Crowd Favorite. Este plugin mostra uma interface desenhada para dispositivos móveis quando os seus leitores acessam seu blog via celular. Os browsers Mobile são detectados automaticamente, e a lista de browsers suportados pode ser definida nas opções do plugin.

Até Já!

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.
18 abr
Em: WordPress

Melhore seu editor de textos do WordPress

Para quem produz conteúdo para a web, o editor de textos é uma das principais ferramentas de trabalho. No WordPress esse editor é bastante completo, mas é possível deixá-lo ainda mais personalizado e adaptado às suas necessidades. Os colegas do blog Cats Who Code reuniram algumas dicas interessantes e eu reuni as 7 de que mais gostei aqui.

01. Permitir mais tags HTML no editor

Por padrão, o editor do WordPress não permite tags html que não sejam compatíveis com o standard XHTML 1.0. Por exemplo, os iframes não são reconhecidos e aceitos pelo editor. Se você deseja adicionar um iframe dentro do artigo ou de uma página, é provável que acabe por se frustrar pelo caminho.

O código abaixo irá forçar o seu editor a aceitar mais tags HTML. Apenas copie e cole o seguinte código para o arquivo functions.php do seu template, salve e está feito!

function fb_change_mce_options($initArray) {
    $ext = 'pre[id|name|class|style],iframe[align|longdesc| name|width|height|frameborder|scrolling|marginheight| marginwidth|src]';
 
    if ( isset( $initArray['extended_valid_elements'] ) ) {
        $initArray['extended_valid_elements'] .= ',' . $ext;
    } else {
        $initArray['extended_valid_elements'] = $ext;
    }
 
    return $initArray;
}
add_filter('tiny_mce_before_init', 'fb_change_mce_options');

02. Definir o editor HTML como padrão

A grande maioria dos webdesigners e dos desenvolvedores não gosta do editor visual do WordPress. Pessoalmente usamos tanto o editor visual quanto o HTML, mas verdade seja dita, o editor visual tem muito mais probabilidade de gerar código não válido e/ou confusões em termos de organização.

Se você é um daqueles usuários que prefere usar o editor HTML, então por que não torná-lo no padrão? Copie e cole a seguinte linha de código para o arquivo functions.php do seu template e está feito.

add_filter('wp_default_editor', create_function('', 'return "html";'));

03. Definir o texto padrão no seu editor

Se você sempre inicia seus artigos com o mesmo texto, por exemplo indicando a seus usuários que podem assinar seus feeds ou a newsletter, então você certamente deveria tornar esse texto um padrão do seu editor do WordPress. Dessa forma, o texto aparecerá automaticamente sempre que você vai escrever um novo artigo.

Abra o seu arquivo functions.php e cole lá dentro o seguinte código. Não se esqueça de editar o texto conforme a sua necessidade.

add_filter( 'default_content', 'my_editor_content' );
 
function my_editor_content( $content ) {
    $content = "Se gostou desta postagem, não esqueça de subscrever o nosso rss feed.";
    return $content;
}

4. Adicionar a sua língua à verificação ortográfica

Por padrão, o WordPress tem um verificador de ortografia em Inglês para verificar os seus erros de escrita em seus artigos e páginas. Mas, o que acontece se você escrever textos em várias línguas e/ou escrever textos numa outra língua além daquela que está na raiz do seu WordPress?

Se pretender adicionar uma outra língua à verificação ortográfica do seu WordPress, isso é bastante fácil de fazer na verdade. Copie e cole o seguinte código dentro do seu arquivo functions.php para adicionar o Português ao seu verificador ortográfico.

function fb_mce_external_languages($initArray){
    $initArray['spellchecker_languages'] = '+Portuguese=pt, English=en';
 
    return $initArray;
}
add_filter('tiny_mce_before_init', 'fb_mce_external_languages');

Você pode ver a tabela de prefixos completa no Codex do WordPress.
05. Adicionar botões ao editor

O TinyMCE (o nome do editor WYSIWYG usado no WordPress) tem diversos botões que permitem colocar texto em negrito, inserir parágrafos, e por aí adiante.

Se você gosta da ideia de inserir botões personalizados, o código seguinte irá ajudá-lo com essa tarefa. Copie e cole-o no arquivo functions.php do seu template, e um botão “YouTube” será apresentado no seu editor. Tenha em mente que este código adiciona o botão ao seu editor, mas ele não faz qualquer tipo de ação. Cabe a você explorar um pouco as opções disponíveis para criar ações que deseje e customizar o editor do jeito que você mais precisa.

function add_youtube_button() {
   if ( ! current_user_can('edit_posts') &amp;&amp; ! current_user_can('edit_pages') )
     return;
   if ( get_user_option('rich_editing') == 'true') {
     add_filter('mce_external_plugins', 'add_youtube_tinymce_plugin');
     add_filter('mce_buttons', 'register_youtube_button');
   }
}
 
add_action('init', 'add_youtube_button');
 
function register_youtube_button($buttons) {
   array_push($buttons, "|", "brettsyoutube");
   return $buttons;
}
 
function add_youtube_tinymce_plugin($plugin_array) {
   $plugin_array['brettsyoutube'] = get_bloginfo('template_url').'/custom/editor_plugin.js';
   return $plugin_array;
}

06. Definir diferentes folhas de estilos para diferentes artigos

Os Custom post types é provavelmente uma das melhores funcionalidades adicionadas ao WordPress nos últimos anos. Se já os experimentou, provavelmente já criou alguns custom post types para o seu portfólio ou simplesmente para outro tipo de atividade específica. E que tal definir diferentes folhas de estilo no seu editor HTML para os diferentes tipos de artigos que você vai criar?

Copie e cole o seguinte código no arquivo functions.php do seu template. Você vai precisar fazer algumas adaptações, dependendo do tipo de artigos. Não se esqueça também de mudar o nome das folhas de estilo.

function my_editor_style() {
    global $current_screen;
    switch ($current_screen-&gt;post_type) {
    case 'post':
        add_editor_style('editor-style-post.css');
        break;
    case 'page':
        add_editor_style('editor-style-page.css');
        break;
    case 'portfolio':
        add_editor_style('editor-style-portfolio.css');
        break;
    }
}
add_action( 'admin_head', 'my_editor_style' );

07. Mostrar botões escondidos do editor

Por padrão, o editor TinyMCE do WordPress tem botões para tarefas comuns como negrito, itálico, títulos, etc, mas que estão escondidos. É necessário clicar num botão para que essas opções sejam mostradas.

Para mostrar sempre os botões escondidos do seu editor, copie e cole o seguinte código no arquivo functions.php do seu template:

function enable_more_buttons($buttons) {
  $buttons[] = 'hr';
  $buttons[] = 'fontselect';
  $buttons[] = 'sup';
 
  // etc, etc...
 
  return $buttons;
}
add_filter("mce_buttons", "enable_more_buttons");

Até a próxima!

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.
18 abr

Como criar uma pesquisa em Ajax para WordPress

Já pensou como seria interessante facilitar a busca e ajudar seus leitores a encontrarem as matérias de seu site? Que tal criar um campo de pesquisa que completa as palavras automaticamente, tal como acontece com o Google?

Neste artigo, vamos criar uma pesquisa em Ajax, usando portanto PHP e Ajax. A ideia original é dos colegas do wphacks. Como este código é experimental, as buscas no SQL não estão devidamente otimizadas, tenha isso em mente.
A ideia

Usaremos tags como uma lista de palavras-chave a serem sugeridas ao leitor.

Quando o leitor começar a escrever na sua barra de pesquisa, usaremos Javascript para enviar um pedido a uma página PHP que fará o seguinte pedido ao SQL: SELECT * FROM matable WHERE ‘name’ LIKE ‘$search%’.

Via Ajax, enviaremos os resultados pesquisados para a nossa página, para mostrá-los ao leitor.

Parte 1: PHP

A primeira coisa a se fazer é criar uma página PHP. Essa página irá enviar um pedido ao banco de dados do WordPress e mostrará as tags como uma lista não ordenada em HTML.

<?php
 
if (isset($_POST['search'])) {
 
        $search = htmlentities($_POST['search']);
 
} else  $search ='';
 
$db = mysql_connect('localhost','root',''); //Don't forget to change
 
mysql_select_db('wp', $db);          //theses parameters
 
$sql = "SELECT name from wp_terms WHERE name LIKE '$search%'";
 
$req = mysql_query($sql) or die();
 
echo '<ul>';
 
while ($data = mysql_fetch_array($req))
 
{
 
        echo '<li><a href="#" onclick="selected(this.innerHTML);">'.htmlentities($data['name']).'</a></li>';
 
}
 
echo '</ul>';
 
mysql_close();
 
?>

Esse código é bastante simples: ele recebe um parâmetro POST (as letras escritas no campo de pesquisa pelo visitante) e depois envia um pedido para a nossa base de dados WordPress como forma de receber as tags que se iniciam com essas mesmas palavras.
Parte 2: AJAX

Precisaremos programar 4 funções Javascript, de forma a recriar a nossa pesquisa que completa as palavras automaticamente:

A função ajax() irá criar um objeto XMLHTTPRequest.
A função request() irá enviar um pedido em Ajax para puxar o nosso arquivo gettags.php.
A função return() irá retornar os dados do arquivo gettags.php.
A função selected() irá atualizar o campo de pesquisa.

Comece por criar um arquivo com o nome gettags.js e cole lá dentro o seguinte código:

var myAjax = ajax();
 
function ajax() {
 
        var ajax = null;
 
        if (window.XMLHttpRequest) {
 
                try {
 
                        ajax = new XMLHttpRequest();
 
                }
 
                catch(e) {}
 
        }
 
        else if (window.ActiveXObject) {
 
                try {
 
                        ajax = new ActiveXObject("Msxm12.XMLHTTP");
 
                }
 
                catch (e){
 
                        try{
 
                                ajax = new ActiveXObject("Microsoft.XMLHTTP");
 
                        }
 
                        catch (e) {}
 
                }
 
        }
 
        return ajax;
 
}
 
function request(str) {
 
    //Don't forget to modify the path according to your theme
 
        myAjax.open("POST", "wp-content/themes/openbook-fr/gettags.php");
 
        myAjax.onreadystatechange = result;
 
        myAjax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 
        myAjax.send("search="+str);
 
}
 
function result() {
 
        if (myAjax.readyState == 4) {
 
                var liste = myAjax.responseText;
 
                var cible = document.getElementById('tag_update').innerHTML = liste;
 
                document.getElementById('tag_update').style.display = "block";
 
        }
 
}
 
function selected(choice){
 
        var cible = document.getElementById('s');
 
        cible.value = choice;
 
        document.getElementById('tag_update').style.display = "none";
 
}

Parte 3: editar o template

Agora que temos nosso PHP e Javascript prontos, podemos editar o arqivo searchform.php do nosso template WordPress.

O seu novo arquivo searchform.php deverá ficar assim:

<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
 
        <div>
 
                <input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />
 
                <input type="submit" id="searchsubmit" value="Search" />
 
        </div>
 
</form>

Teremos de adicionar uma div, que irá mostrar os dados recebidos a partir do pedido, bem como um evento Javascript no formulário de pesquisa:

<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
 
    <div>
 
        <input type="text" value="<?php the_search_query(); ?>" name="s" id="s" onkeyup="request(this.value);"/>
 
        <input type="submit" id="searchsubmit" value="Search" class="button" />
 
    </div>
 
    <div id="tag_update"></div>
 
</form>

Parte 4: CSS

Tendo em consideração que todos os templates WordPress utilizam sistemas de cores diferentes, este é apenas um exemplo do que poderá fazer com o seu CSS.

#tag_update {
 
        display: block;
 
        border-left: 1px solid #373737;
 
        border-right: 1px solid #373737;
 
        border-bottom: 1px solid #373737;
 
        position:absolute;
 
        z-index:1;
 
}
 
#tag_update ul {
 
        margin: 0;
 
        padding: 0;
 
        list-style: none;
 
}
 
#tag_update li{
 
        display:block;
 
        clear:both;
 
}
 
#tag_update a {
 
        width:134px;
 
        display: block;
 
        padding: .2em .3em;
 
        text-decoration: none;
 
        color: #fff;
 
        background-color: #1B1B1C;
 
        text-align: left;
 
}
 
#tag_update a:hover{
 
        color: #fff;
 
        background-color: #373737;
 
        background-image: none;
 
}

É isso! Acabamos de criar uma pesquisa que completa para palavras automaticamente! Se tiver alguma questão, deixe um comentário.

Até a próxima!

Autor: Paulo Faustino

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.
17 abr
Em: WordPress

Como ativar e utilizar os WordPress Post Formats

Com a chegada do novo WordPress 3.1, chegaram também algumas novidades na forma como o nosso sistema de blogagem preferido trabalha. Foi incluída uma novidade chamada WordPress Post Formats, que são basicamente estilos de postagens diferentes que se comportam de formas diferentes. Imagine que você escreva um artigo sobre apostas online e pretende que ele tenha um aspecto XPTO. Mas, depois, você quer escrever um artigo sobre empregos com um formato OTPX. Com os WordPress Post Formats, isso é possível.
Como ativar os post formats

Para ativar a função WordPress Post Formats no seu novo WordPress 3.1, basta copiar e colar o seguinte código no arquivo functions.php do seu template wordpress:

add_theme_support( 'post-formats', array( 'aside', 'gallery','link','image','quote','status','video','audio','chat' ) );

Assim que adicionar a função dos Post Formats, você irá ver imediatamente uma nova caixa na barra lateral do seu editor de páginas tal como esta:

O que fazer com os post formats

Assim que os post formats estiverem ativos, você pode utilizá-los imediatamente nos seus templates. Existem duas funções que são primordiais para trabalhar com os post formats: get_post_format() e a função has_post_format(). Existe também a função get_post_format_link() que lhe permite linkar diretamente para um arquivo de post formats para cada um dos formatos que utilizar.

Usando a função has_post_format(), você tem de especificar qual o formato que está utilizando, depois introduzir algumas funções dentro da declaração if para gerir as postagens com esse post format. Algo tipo isto:

if ( has_post_format( 'image' )) {
  the_post_thumbnail('large');
  echo the_title();
}

Alterar o ciclo dos artigos

Se desejar, poderá ainda alterar o ciclo (loop) dos seus artigos para mostrar um formato de postagem diferente por cada post format que utilize. Esta funcionalidade é muito engraçada para criar sites e blogs com estilos diversificados. Para o fazer, substitua o seu ciclo de artigos pelo seguinte código:

<?php
    if ( has_post_format( 'aside' )) {
        echo the_content();
    }
    elseif ( has_post_format( 'chat' )) {
        echo '<h3>';
        echo the_title();
        echo '</h3>';
        echo the_content();
    }
    elseif ( has_post_format( 'gallery' )) {
        echo '<h3>';
        echo the_title();
        echo '</h3>';
        echo the_content();
    }
    elseif ( has_post_format( 'image' )) {
        echo '<h3>';
        echo the_title();
        echo '</h3>';
        echo the_post_thumbnail('medium');
        echo the_content();
    }
    elseif ( has_post_format( 'link' )) {
        echo '<h3>';
        echo the_title();
        echo '</h3>';
        echo the_content();
    }
    elseif ( has_post_format( 'quote' )) {
        echo the_content();
    }
    elseif ( has_post_format( 'status' )) {
        echo the_content();
    }
    elseif ( has_post_format( 'video' )) {
        echo '<h3>';
        echo the_title();
        echo '</h3>';
        echo the_content();
    }
    elseif ( has_post_format( 'audio' )) {
        echo '<h3>';
        echo the_title();
        echo '</h3>';
        echo the_content();
    }
    else {
        echo '<h3>';
        echo the_title();
        echo '</h3>';
        echo the_content();
    }
?>

Estilizar os post formats

Utilizando as classes body_class() e post_class(), você pode aproveitar as vantagens das classes dos novos post formats que são automaticamente aplicadas a todos os artigos dentro do ciclo. Os nomes das classes serão deste tipo:

format-image

format-video
format-aside
format-status

Isso torna a estilização dos seus artigos muito simples, uma vez que, usando as classes, você poderá estilizar os seus novos artigos da forma que bem desejar.

Abraço e até a próxima!

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.
16 abr
Em: WordPress

Inserindo resumo em uma página WordPress sem plugin

Se você tem um site em WordPress, já deve ter precisado inserir o metabox “Resumo” no tipo de post “Página”. Antes, esse problema só era solucionado utilizando plugins ou inserindo manualmente um metabox. Mas, na versão 3.0, o WordPress traz uma variedade de novas funções, como add_post_type_support() e remove_post_type_support().

Funcionalidades

  1. add_post_type_support( $post_type, $feature ) – Adiciona uma funcionalidade a determinado tipo de post. O parâmetro $post_type permite a você especificar qual tipo de post irá ser afetado. Esse tipo não se limita a páginas, você pode utilizar qualquer tipo de post válido, como um já registrado por register_post_type por exemplo.
  2. remove_post_type_support( $post_type, $feature ) – Funciona exatamente como a função add_post_type_support(), com a diferença de que, ao invés de adicionar uma funcionalidade, ele retira esta funcionalidade.

Adicionando  o metabox “Resumo” (excerpt) à páginas

Veja como é simples habilitar o “Resumo” (the excerpt) na página (page).

Adicione em seu functions.php a seguinte linha:

add_post_type_support('page','excerpt');

O código é bastante intuitivo, mas vamos para a curta explicação, de todo modo: no primeiro parâmetro, dizemos para inserir esta funcionalidade no tipo de post “page”, e, no segundo, dizemos qual é esta funcionalidade – no nosso caso, é o “excerp” (resumo).

Pronto, inserimos o resumo à página.

Vamos ver um outro exemplo. Você já deve ter notado que, em posts, não existe o metabox “Atributos de páginas”, o qual só existe em páginas. Pois bem, vamos mudar isso:

add_post_type_support('post','page-attributes');

E…. Tadah! Agora você pode especificar a ordem do seus posts!
Removendo metaboxes dos posts

Vai chegar um momento em que você não vai precisar de todas aquelas caixas em seu post, e não vai querer confundir o usuário com tantas funcionalidades. Portanto, se o seu metabox “Campos personalizados” está confundido seu usuário, vamos tirá-lo:

add_action('init', 'my_init');
function my_init(){
remove_post_type_support('post', 'custom-fields');
}

É importante notar que, ao contrário do add_post_type_support(), que não precisa estar em uma action, o remove_post_type_support() tem que estar!

Por serem funções muito recentes, ainda não existe uma documentação oficial no codex do WordPress. Fiz esse tutorial lendo os changelogs da versão 3.0 do WP e entendendo a função, e aproveitando para explicar aqui para vocês, espero que seja útil!

Antes de finalizar, deixarei aqui todos os valores aceitos no segundo parâmetro ($feature):

'title', 'editor', 'comments', 'revisions', 'trackbacks', 'author',  'excerpt', 'page-attributes', 'thumbnail', e 'custom-fields'

Bom, é isso. Até a próxima.

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.
16 abr
Em: WordPress

Criando template para as subcategorias

As ú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 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 sidebars diferenciados, por exemplo.

Para resolver esse problema, existe uma função que recupera as subcategorias de uma dada categoria (get_term_children) e as retorna em um array. Com isso podemos usar a template tag is_category passando esse array como parâmetro.

Por fim basta condicionar o carregamento dos templates no arquivo category.php:

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' );

Assim, para a categoria 1 e suas respectivas filhas, será usado o template category-noticias.php, já 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.

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.

Clique aqui e baixe o arquivo exemplo:

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.
16 abr
Em: WordPress

Como criar menus e submenus no WordPress

Menu de Páginas no WordPress

O WordPress em seu tema padrão, Kubrick, já traz a Template Tag wp_list_pages, que monta um menu automático em sua sidebar. Neste artigo vou mostrar qual o uso avançado dessa função e como podemos otimizar a construção de menus através de parâmetros passados para a função. Você aprenderá também a montar submenus com a mesma função, ou seja, mostrar as páginas contidas em uma determinada página.

Para puxar todas as páginas do wordpress automaticamente, usamos o código:

<ul>
<?php wp_list_pages(); ?>
</ul>

Esse código retorna todas as páginas publicadas no seu wordpress em itens de uma lista html:

<li class="pagenav">Páginas<ul><li class="page_item page-item-77"><a href="http://www.seusite.com/suapagina/" title="Sua Página">Sua Página</a></li>

Note que você tem que adicionar uma

    antes do código php, senão seu HTML terá erros. Perceba também que o título Páginas que vem antes da lista.

    Acontece que ele pega todas as páginas e, dependendo do caso, precisamos passar alguns parâmetros para ter um resultado customizado para as nossas necessidades.

    Abaixo mostro os parâmetros mais importantes para você poder filtrar os resultados.
    depth

    Esse parâmetro controla quantos levels você quer exibir de páginas e subpáginas.

    Ex 1: Mostrar só a “primeira fila” de páginas, aquelas que não estão dentro de nenhuma.

    <ul> <?php wp_list_pages('depth=1'); ?> </ul>

    title_li

    Com esse parâmetro você pode arrancar o título “Paginas” ou “Pages” que vem junto com a lista.

    Ex 2: Mostrar só as páginas que não estão dentro de nenhuma e arrancar o título Página:

    <ul> <?php wp_list_pages('depth=1&title_li='); ?> </ul>

    Perceba que para colocar mais de um parâmetro dentro do código foi usado o & – serve para ligar os parâmetros.
    exclude

    Há uma página sendo exibida, mas você não quer que ela apareça? Então iremos excluí-la pela sua ID. Você precisa descobrir qual é a ID da página. ID é um número que identifica qual é a página para o WordPress. Para saber qual é a ID da página, vá até o painel em editar páginas, coloque a seta do mouse em cima do link com o nome da Página e olhe na Barra de Status do seu navegador.

    Esse número que aparece por último na URL é a ID da página. No nosso caso, 16.

    Ex 3: Mostrar só as páginas que não estão dentro de nenhuma e arrancar o título Páginas e excluir a página serviços.

    <ul> <?php wp_list_pages('depth=1&title_li=&exclude=16'); ?> </ul>

    Se você quiser excluir mais de uma página, basta colocar ponto e vírgula ( ; ) e colocar a outra id.
    child_of

    Este parâmetro exibe páginas que estão contidas dentro da página atual. Suponha que eu estou na Página Serviços e quero que ela exiba as páginas contidas dentro dessa página. Para isso você tem que colocar o código dentro do Loop do arquivo page.php ou de outro template, porque é o loop que identifica qual é a ID da página, para informar de qual página você está querendo exibir as subpáginas.

    <ul> <?php wp_list_pages('title_li=&child_of='.$post->ID.''); ?>  </ul>

    Ainda existem outros parâmetros, como exibir a data de criação, o formato da data, incluir uma página na lista, não mostrar os resultados, apenas guardar em uma array, colocar um link antes ou depois etc. Abaixo deixo a página da documentação completa em Inglês para quem quiser aprender mais sobre essa função.
    Wordpress Codex

    Função wp_list_pages();

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.
15 abr
Em: WordPress

Criar páginas no WordPress

O WordPress permite total controle sobre a criação de conteúdo, inclusive a criação de novas páginas. Para termos acesso a esse recurso, utilizamos o método wp_list_pages (), método pelo qual, após a criação das páginas, elas são mostradas automaticamente no …

O WordPress permite total controle sobre a criação de conteúdo, inclusive a criação de novas páginas.

Para termos acesso a esse recurso, utilizamos o método wp_list_pages (), método pelo qual, após a criação das páginas, elas são mostradas automaticamente no seu site, pois a grande maioria dos templates para WordPress já vem com essa função, que fica localizada no arquivo header.php do tema do WordPress, gerando uma lista de páginas semelhante a essa:

<ul>
<li><a href="http://seusite.com.br/sobre/" title="Sobre">Sobre</li>
<li><a href="http://seusite.com.br/arquivos/" title="Arquivos">Arquivos</li>
<li><a href="http://seusite.com.br/contato/" title="Contato">Contato</a></li>
</ul>

Após as páginas serem criadas, você pode ocultar certas páginas para que elas não apareçam na navegação, mostrar páginas em um ordem diferente, tudo isso a partir da interface adiministrativa do WordPress.

Ocultar páginas da navegação

Você não quer que a página Arquivos apareça em seu menu, para que isso aconteça, siga os seguintes passos:

  1. Vá até o administrativo de seu WordPress, entre em Gerenciar > Páginas.
  2. Você verá uma lista de todas as páginas criadas.
  3. Aqui precisamos pegar o ID de cada página para podermos ocultá-las posteriormente.
  4. Coloque o mouse sobre o nome da página e você observará na URL, semelhante a essa: http://seusite.com.br/wp-admin/page.php?action=edit&post=4, que o número que vem após o &post= é o ID da página, nessa URL seria o ID 4.
  5. Agora devemos modificar o método wp_list_pages () no arquivo header.php do seu tema WordPress. Para evitar problemas futuros, efetue um backup do arquivo para segurança.
  6. Abra o arquivo, procure por wp_list_pages().
  7. Adicione o arqumento: “exclude=4″.


<?php wp_list_pages('title_li=&exclude=4');?>

Agora a página Arquivos não será mostrada no menu do seu site.

Mostrar páginas em uma ordem diferente

No geral elas são ordenadas alfabeticamente, mas você pode indicar um número para alterar essa ordem:

  1. Vá até Gerenciar > Páginas.
  2. Escolha a página que deseja editar.
  3. Abaixo você verá: Ordem da página, no campo mostrado digite “1″.
  4. Agora devemos efetuar a alteração no arquivo header.php, passando o seguinte argumento no método wp_list_pages().


<?php wp_list_pages ('title_li=&sort_column=menu_order');?>

Sua página a partir de agora será listada por essa ordem. Para alterar a ordem de outras páginas, basta seguir os passos e alterar a ordem como você quiser.

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.
13 abr
Em: SEO & WordPress

Otimizando seu site em WordPress para SEO

Vamos ver como podemos aperfeiçoar seu site em WordPress para SEO e veja a importância de fazer isso.

Uma característica que defina o WordPress é a customização. Em poucas linhas conseguimos soluções significantes. Seja trabalhando com suas funções ou com seus plugins, temos resultados objetivos para preparar um Blog e até mesmo um site de grande porte, como temos hoje, vários exemplos disso.

Elogiam muito o WordPress por ele ter uma facilidade com o SEO. Antes de começarem a ler as dicas que vou citar, faça a seguinte reflexão: O que é um site hoje, sem ser bem indexado pelos mecanismos de busca?
Melhore a tag title do seu site

Você acha mesmo que a tag de título do seu site não tem importância? Espero que não, pois é com ela que os mecanismos de busca reconhecem uma das primeiras informações do seu site.

Coloque o seu título da seguinte forma:

<title><?php wp_title(|, true, ‘right’); ?><?php bloginfo(‘name’); ?></title>

A função wp_title imprime vários resultados a depender da sua página.
Links permanentes (Permalinks)

Quem usa WordPress e não usa essa função básica, não sabe o que está perdendo. A URL também tem uma função importante para indexação de sites, pois também é reconhecido antes da página ser carregada. O seu site sairia na frente de diversas URL’s que usam aqueles parâmetros grandes e sem semântica.

Dentro de seu painel de administração, procure por Settings (Configurações) e depois Links Permanentes (Permalinks). Selecione a opção Custom Structure (Estrutura Personalizada) e altere sua estrutura para:

/%category%/%postname%/

Otimizando as metas do seu site

Para otimizar as metas, utilize o plug-in All in One SEO Pack, com esse plug-in conseguimos facilmente manipular as metas e também títulos do site. Com ele, alteram-se as metas de descrição e keywords (palavras-chave) da página inicial e também dos posts, além dos títulos de cada página.

Baixe o plug-in, instale-o e ative.
Mecanismos de busca odeiam SPAM

Os mecanismos de busca odeiam SPAM, ou seja, odeiam conteúdo ruim e/ou desnecessário. Existe um plug-in que modera spam no seu site, chama-se Akismet. Geralmente ele já é incluído quando você instala o WordPress, mas caso não encontre depois que instalar, baixe-o e ative-o.

Para usar do plug-in é necessário resgatar um código gerado pelo site deles.
Use semântica no seu código

Do que adianta ter todos esses aperfeiçoamentos no seu site e seu site não estiver com um código semântico? Por isso trabalhe com um código de qualidade para que não haja dificuldade para seu código ser lido pelos mecanismos de busca.

Use alt e title para as imagens, não esqueçam, pois as imagens só podem ser lidas desta maneira. Trabalhe bem com as tags de título h1, h2, h3, h4, h5, h6, e estabeleça uma hierarquia entre elas.
Utilize sempre um plug-in de cache

A partir da demanda do seu site e ele for crescendo em questão de conteúdo, é sempre bom ter um plug-in de cache para diminuir o carregamento da sua página, sendo assim os mecanismos de busca não terão dificuldades para carregar seu site.

Indico WP Super Cache, W3 Total Cache, Batcache ou Hyper Cache.

Tenho certeza que com um deles, seu site estará em boas mãos em relação ao cache.
Sitemaps (mapa do site)

Para os mecanismos de busca, um sitemap ajuda nas buscas de páginas, pois ele relaciona as URL existentes no seu site. Leia esse artigo e veja o porquê do uso de sitemaps.

O WordPress tem um plug-in que gera um sitemap já otimizado para mecanismos de busca.

Use o Google SiteMap Generator e não tenha possíveis problemas para este assunto.
Crie um bom Meta Robôs

É importante você ter um robots.txt na raiz do seu site, que é um arquivo funciona como filtro para os Crawlers e os robôs dos mecanismos de busca, permitindo ou não acesso a páginas do seu site.

Crie um arquivo em txt, chamado robots.txt com o seguinte código:

User-agent: *
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /trackback
Disallow: /feed
Disallow: /comments
Disallow: /category/*/*
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Disallow: /*?*
Disallow: /*?
Allow: /wp-content/uploads
 
# Google Image
User-agent: Googlebot-Image
Disallow:
Allow: /*
 
# Google AdSense
User-agent: Mediapartners-Google*
Disallow:
Allow: /*
 
# digg mirror
User-agent: duggmirror
Disallow: /
 
Sitemap: http://www.seusite.com.br/sitemap.xml

Envie para o servidor e ponha na raiz do seu site.

E no header.php do seu tema, adicione o código:

<?php
if(is_single() || is_page() || is_category() || is_home()) {
        echo '<meta name="robots" content="all,noodp" />';
}
else if(is_archive()) {
        echo '<meta name="robots" content="noarchive,noodp" />';
}
else if(is_search() || is_404()) {
        echo '<meta name="robots" content="noindex,noarchive" />';
}
?>

Faça um bom conteúdo

Não adianta ter um site todo otimizado para os mecanismos e eles não terem o que buscar de conteúdo no seu site. Fazer um bom conteúdo é essencial para qualquer indexação de artigo, página, textos ect.

Também não se esqueça de trabalhar com as redes sociais, pois maior quantidade de links gerados para o seu site, maior relevância ele terá.

Seja sempre objetivo e claro na suas publicações, tenho certeza que terá um bom resultado. Vale ressaltar que o Google está punindo quem copia conteúdo, muito cuidado.

Caso tenha futuras dúvidas, o WordPress oferece no seu codex um guia para otimização de SEO

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.
12 abr
Em: WordPress

Criando Menus no WordPress

Aprenda a adicionar menus e edite no seu próprio painel de administração com as páginas ou links que você quer

Depois da versão 3.0, a criação de menus no WordPress tornou-se muito importante, pois se utiliza um gerenciador para reproduzir as informações do menu. No menu, pode-se criar links, integrar páginas e páginas de arquivo.

Habilitando e registrando o menu

Em functions.php do seu tema, adicione:

if ( function_exists( 'register_nav_menu' ) ) {
    register_nav_menu( 'meu_menu', 'Este é meu primeiro menu' );
    register_nav_menu( 'segundo_menu', 'Este é meu segundo menu' );
}

De início, verificamos a função register_nav_menu. Dentro da função, abrigamos dois parâmetros, que são: nome do menu (de preferência sem espaços e letras maiúsculas) e a descrição do menu. Ambos são obrigatórios nesta função.

Essa função já habilita o suporte para os menus.
Retornando o menu

Adicione o seguinte código onde queira que o retornasse o menu:

wp_nav_menu( array(
    'menu' => 'meu_menu',
    'theme_location'    => 'meu_menu',
    'container'         => 'div',
    'container_class'   => 'classe_do_container',
    'container_id'      => 'id_do_container',
    'menu_class'        => 'classe_do_menu',
    'echo'           => true,
    'menu_id'        => 'id_do_menu',
    'before'         => '',
    'after'          => '',
    'link_before'    => '',
    'link_after'     => '',
    'depth'          => 0,
    'walker'          => '',               
) );

Como perceberam, a função wp_nav_menu recebe alguns parâmetros, para não haver dúvidas, explico melhor abaixo.

menu: O nome do menu em que deseja retornar (valor determinado na função register_menu)
theme_location: Onde vai está localizado o menu (valor determinado na função register_menu)
container: Se alguma tag irá envolver a lista do menu
container_class: Classes do container
container_id: O ID do container
menu_class: Classes da lista do menu
menu_id: O ID da lista do menu
echo: Usado para retorno do menu, em uma vez que seu valor seja falso, o menu não será retornado ou visível.
before: Se algum elemento entrará antes do menu
after: Se algum elemento entrará depois do menu
link_before: Se algum elemento entrará antes do link
link_after: Se alguém elementro entrará depois do menu
depth: Quantos níveis de hierarquia devem ser incluídos
walker: Objeto para personalização do menu

Habilitando descrição

Para terminar a explicação, os Menus do WordPress contém uma opção para descrição nos menus. É uma forma melhor de explorar o conteúdo e também explicar um pouco mais o parâmetro walker, que ficou um pouco difícil de se entender.

Primeiro, ative a opção de descrição desta forma: Abra a seção de menus no painel de administração e vá a Screen Options (Opções de tela) e ative a opção Description (Descrição)

  /* Código por: http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output */
    class descricao_walker extends Walker_Nav_Menu
{
      function start_el(&$output, $item, $depth, $args)
      {
           global $wp_query;
           $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
 
           $class_names = $value = '';
 
           $classes = empty( $item->classes ) ? array() : (array) $item->classes;
 
           $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
           $class_names = ' class="'. esc_attr( $class_names ) . '"';
 
           $output .= $indent . '<li>ID . '"' . $value . $class_names .'>';
 
           $attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
           $attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
           $attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
           $attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
 
           $prepend = '<strong>';
           $append = '</strong>';
           $description  = ! empty( $item->description ) ? '<p>'.esc_attr( $item->description ).'</p>' : ''; // aqui é aonde a informação está a descrição
 
           if($depth != 0)
           {
                     $description = $append = $prepend = "";
           }
 
            $item_output = $args->before;
            $item_output .= '<a>';
            $item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append;
            $item_output .= $description.$args->link_after; //aqui aonde a descrição estará sendo retornada
            $item_output .= '</a>';
            $item_output .= $args->after;
 
            $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
            }
}

No código, foi criado uma classe retorna todo o item do menu, ou seja, a

  • . Está comentado no código onde você vai encontrar os códigos da descrição. É necessário entender um pouco de PHP para alterar esse código e personalizar ainda mais o seu menu.

    Para retornar essa classe, vamos usar o walker do menu, altere o valor, assim:

    'walker' => new descricao_walker()

    Você pode determinar o valor da descrição no mesmo lugar aonde você altere as informações do menu.

  • 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.