Advertisement
-
Desenvolvendo um templante para wordpress
Com as suas últimas edições, WordPress estendeu muito além do seu potencial blogging, avançando para um avançado, robusto e muito poderoso solução de gerenciamento de conteúdo. Por padrão, o WordPress oferece uma muito leve, mínima sistema que oferece apenas funcionalidades básicas. Mas quando o núcleo está aquém WordPress, há uma riqueza de plug-ins que estendem as suas limitações.
Plug-ins frequentemente oferecer soluções simples, mas nem sempre são elegantes soluções: em particular, que pode adicionar uma sobrecarga notável, por exemplo, se eles oferecem mais funcionalidade do que necessária. De fato, algumas considerações gerais e frequentemente necessários WordPress-funcionalidades podem ser adicionadas ao motor sem inchado plugins, utilizando o software em si.
Este artigo apresenta 8 dicas para desenvolvedores WordPress modelo que abordam CMS execução desafios comuns, com pouco ou nenhum plug-in de dependência. Estes exemplos são escritos para WordPress 2,7 + e também deve trabalhar no WordPress-versão mais recente.
Você pode estar interessado nos seguintes lugares ligados:
- 10 úteis WordPress Loop Hacks
- Campo personalizado Hacks Para WordPress
- 15 úteis Twitter Hacks e plugins para WordPress
- Dominar WordPress Atalhos
- 100 Amazing Free WordPress temas para 2009
1. Associar páginas com pós categorias
WordPress permite aos administradores identificar qualquer página como a página lugares: este é ideal para implementações CMS apresenta um único notícias ou blog feed. No entanto, não fornece nenhuma WordPress simples, out-of-the-box mecanismo para configurar um site com múltiplos, independente feeds.
Aqui está um caso uso comum: uma empresa quer um blog simples e casual, e um distinto e mais formal de alimentação de imprensa dentro de suas "About Us" section. Vamos lista alguns requisitos mandatado pelo cliente que procuram apenas uma amostra que:
- Em nenhum momento destes dois alimentos deve ser exibida como um.
- Links para estes alimentos têm de aparecer na página navegação.
- O Press Release página precisa ter estático, manter conteúdo acima da sua alimentação.
- Para fins SEO, estes alimentos devem ter uma página como permalink-estrutura: em outras palavras, "mysite.com / categoria / press-releases" é inaceitável, o objetivo é "mysite.com / about-us / press-releases".

Como é frequentemente o caso, existem várias abordagens um pode tomar. Principais considerações utilizadas para avaliar a melhor abordagem incluem o número de páginas autônomo alimentação (uma, neste caso: Comunicados de imprensa) e para a necessidade de um "primário" feed exigindo múltiplas categoria apoio. Para este exemplo, vamos supor que "o nosso blog" não precisa se comportar como um blog com caracterizado cheio categorias.
Preparando o site
Esta abordagem de "páginas com uma única feeds" é construída sobre uma associação criada entre uma página e um posto categoria. O "primeiro" blog será simplesmente o "lugares página" com algumas adaptações modelo que irá excluir lugares do "Press Release" feed. Para satisfazer a exigência de um SEO lógico e coerente URL estrutura, vamos ter de configurar e definir cuidadosamente permalinks.
- No "Leitura" definições, garantir que a "Frente página exibe" opção é definida como "uma página estática", e que o "Lugares página" é definido como "o nosso blog".
- Na "Permalinks" definições para WordPress, garantir que a "Estrutura Personalizada" é selecionado. A estrutura deverá ser: /% categoria% /% postname% /.
- Na página da lista, a identificar o permalink (ou lesma) para o "About Us" page (usando nosso sitemap exemplo: vamos dizer "about-us"). Identificar a bala para o Press Release página ( "press-releases").
- Duas categorias correspondentes deve ser acrescentado: um "About Us" categoria com uma congruência permalink ( "about-us"), e um "Press Release" categoria com uma congruência permalink ( "press-releases") e sua mãe categoria para definir " About Us ".
- Crie um post no "Press Release" categoria para fins de teste.

Excluindo a categoria a partir da página do blog
Para excluir uma categoria a partir da página principal do blog (que mostra todos os lugares entre categorias), o pós-consulta utilizada para a página do blog modelo deve ser modificado.
O WordPress códice contornos da solução. Basta identificar o ID para a categoria "Imprensa" categoria (pairar o mouse sobre o nome da categoria do painel de administração e olhando para o URL na barra de status é uma maneira fácil de encontrar o ID - vamos usar para o exemplo 5), e insira o seguinte código acima da pós loop:
query_posts ( "cat =- 5");Note-se que muitos modelos incluem também uma lista de categorias na barra lateral, recente post listas, e outros componentes que não podem excluir mensagens a partir da "imprensa" categoria. Estes também terão de ser modificados para excluir a categoria, que é apoiada por mais facilmente WordPress chamadas.
Ativando o indivíduo feed página
O feed página irá requerer uma página personalizada modelo. Para esse exemplo, temos o chamado modelo "Press Release Feed", e utilizou os genéricos "page.php" modelo como um ponto de partida (copiando-o e renomeá-lo "page_press.php").
Uma vez que os requisitos mandato estático, editável conteúdo da página acima do animal, o primeiro pós-loop - que cai no conteúdo da página - será deixada como está. Abaixo o código para o conteúdo da página de saída, uma outra pesquisa e pós-loop será executado. Uma vez concluída, a consulta deve ser redefinir usando "wp_reset_query" para que itens que aparecem após o loop - como a navegação lateral - pode corretamente referência informação armazenada é a página original query.
O quadro geral para o código abaixo. A documentação relativa à consulta lugares WordPress códice fornece insights sobre grande personalização.
query_posts ( 'category_name = Press Release ");
if (have_posts ()): while (have_posts ()): the_post ();
/ / saída vai postar aqui ... index.php normalmente fornece um bom modelo
endwhile; endif;
wp_reset_query ();Evidentemente, a certeza de atribuir o "Press Release" página do novo modelo, na página editor.
O diabo está nos detalhes
Dependendo das características de cada local, muitas outras personalizações modelo - para além dos indicados acima - provavelmente será necessário. Em particular, este "poder ponta" não abrange estratégias específicas para o tratamento pós opiniões individuais isoladas dentro destes feeds. No alto nível, usando condicional in_category controlos no âmbito do "single.php" modelo (usado para a produção de cada um dos posts) devem fornecer a base para customizing pós opiniões com base em sua categoria. Se estiver interessado, um artigo mais detalhado pode explorar essas estratégias em maior detalhe (por favor deixe-nos saber nos comentários!).
Cenários alternativos
Criar modelos para cada página individual autônomo alimentação é uma solução eficiente para um site com apenas um par de tais alimentos. Existem, no entanto, WordPress-powered sites como M62 comunicações visuais que se estendem a idéia da categoria e até mesmo páginas com tag associação muito mais profundamente. M62 características associadas com dezenas de páginas cada blog categorias, mãe categorias e tags, perfeitamente misturado com a norma, "feed-less" páginas. Nestes casos, uma solução mais inteligente seria envolver especializada modelos que correspondem a tag e categoria permalinks contra permalinks página dinamicamente para criar associações.
Esta abordagem também pode facilitar a sites que exigem mais do que um "primário" (multi-categoria) blog, através da utilização das categorias hierárquicas / mãe categorias.
Novamente, se houver interesse, um artigo pode discutir futuras destes métodos em detalhe.
2. "Amigo" membro apenas páginas
Out-of-the-box, WordPress inclui uma opção para designar qualquer página ou post como privado. Por padrão, esses itens não aparecem na página ou pós listas (incluindo navegação) e gerar erros 404 quando visitou directamente - a menos que o visitante é registrado pol Enquanto utilitarista, mais frequentemente do que não, este não é o ideal para a usabilidade.
Muitas vezes, sites intencionalmente tornar pública consciente visitantes de páginas ou lugares cujo conteúdo completo é visível apenas para os membros. Uma simpática mensagem alertando visitantes que tenham alcançado uma única página-membros, com um prompt de login, pode ser uma solução melhor. Content-centric sites podem burlar o público com "acima da dobra" - ou abreviado - conteúdo para toda a audiência, enquanto o visitante sedutora para efetuar login ou registe-se para ler todo o artigo.

Este exemplo oferece um quadro para estas "híbrido" membro / público páginas usando o último cenário como um exemplo. Conteúdo caracterizado "acima da dobra" - igual ou superior a "mais" SEPERATOR - será visível para o público em geral. Conteúdo abaixo da tampa só estará disponível para os membros. No lugar do conteúdo abaixo da dobra, público visitante será solicitado a log pol
Esta abordagem de "híbrido" páginas é construída público, publicado páginas com um campo personalizado utilizado para identificar o conteúdo da página como "membro exclusivo".
- Criar uma página ou post.
- Comece com um ponto ou dois visíveis para o público em geral.
- Insira o "mais tag" no final do conteúdo público.
- Digite conteúdo visível apenas para os membros registrados em mais abaixo da tag.
- Adicionar um campo personalizado chamado "member_content". Defina o seu valor para 1.
- Publicar a página com a visibilidade pública (o padrão).

A próxima etapa envolve a edição do modelo aplicável arquivos. Normalmente, este será "page.php" (páginas) e "single.php" (lugares). Note que, se essas opiniões híbrido será aplicável apenas às páginas, um desenvolvedor pode criar um "membro conteúdo" página modelo como alternativa à utilização de um campo personalizado. Se o fizer, irá eliminar a necessidade de o campo personalizado verificar saídas e alternativas dentro do mesmo modelo.
Para este exemplo, vamos supor que nós criamos um post (não página) com os conteúdos exclusivos. Por isso, será necessário editar "single.php". Dentro do modelo, localize o the_content chamada para cair na página e postar conteúdo. Veja o que muitas vezes este aspecto antes de as alterações:
the_content ();Aqui está o novo código com a alternativa "público" ver:
if (! get_post_meta ($ post-> ID, 'member_content ", true) | | is_user_logged_in ()) (
the_content ( '<p class="serif"> Leia o resto desta entrada »</ p>');
) Else (
global $ mais; / / Declare global $ mais (antes do loop).
$ maior = 0; / / Set (dentro do loop) para exibir o conteúdo mais acima da tag.
the_content (""); / / pass string vazia para evitar mostrando link "mais"
echo "<p> <em> O artigo completo está disponível apenas para membros. Faça login para ler o artigo na sua totalidade. </ em> </ p>";
)Combine isso com a próxima dica para incluir um formulário de login membros que envia de volta para a página atual ou correio.
3. Embutir um log-in formulário que retorna à localização actual
Às vezes, o envio de membros para o padrão WordPress login forma, não é o ideal. Pode, por exemplo, não ser coerente com o olhar e sentir um cliente está buscando. Também pode haver casos em que encaixa um formulário de login em uma página - como na ponta 7 - oferece superior usabilidade comparado ao clicar um link para a página de login.
O código abaixo gotas WordPress o formulário de login para o modelo, e envia o usuário de volta para a página que está autenticado partir.
<? php if (! is_user_logged_in ()) (?>
<form action = "<? php echo wp_login_url (get_permalink ());?>" method = "post">
<label for="log"> <input type = "text" name = "login" id = "login" value = "<? php echo wp_specialchars (stripslashes ($ user_login), 1)?>" size = "22" /> Usuário </ label> <br />
<label for="pwd"> <input type="password" name="pwd" id="pwd" size="22" /> Senha </ label> <br />
<input type="submit" name="submit" value="Send" class="button" />
<label for="rememberme"> <input name="rememberme" id="rememberme" type="checkbox" checked="checked" Lembrar-me value="forever" /> </ label>
</ form>
<? php)?>Esteja ciente de uma armadilha da presente fácil de implementar poder dica: se o usuário não se logar com o bom credenciais, o log de erro irá aparecer no formulário de login padrão WordPress. O visitante terá, contudo, ainda ser redirecionado de volta para a página original após êxito log-in.
4. Identificar o nível superior Page
O "nível superior página" é o mais alto nível dentro da página atual ramo do sitemap. Por exemplo, se você considerar que a página a seguir, você verá que "Apoio e Recursos", "Encontrar Apoio", e "Apoio a Doentes" todas as partes o nível mais alto página "Suporte & Recursos".

Existem alguns relativamente novo plug-ins que fazem "ponto", ou "nível superior página" WordPress uma cincha navegação, como a simples secção Navegação. No entanto, há muitas instâncias (fora de navegação), onde o modelo pode estar conscientes da necessidade de o actual nível superior página.
Por exemplo, você poderá querer ser capazes de estilo desenho certos elementos, como a barra de navegação da imagem de fundo, dependendo do momento escolhido seção. Isto pode ser alcançado através da verificação da página de identificação da página de nível superior dentro do cabeçalho, e largando em estilos adicionais quando os IDs para os de nível superior foram encontradas páginas.
Aqui está como isso funciona. Embora construído no WordPress não oferece chamadas para determinar o nível mais alto página, ele pode ser encontrado com uma única linha de código no modelo:
top_level $ = ($ post-> post_parent)? final (get_post_ancestors ($ post)): $ post-> ID;Usando um ternário condicional, esta linha de código verifica se o valor de R $ pós-> post_parent, que retorna a página atual pai da página de identificação, se existir. Se a condição é avaliada como "true" (tal como qualquer inteiro positivo irá), do que a página atual tem alguns "ancestory"; em outras palavras, é uma página dentro da hierarquia ou sucursal no sitemap. Se a condição falhar, a página é uma página de nível superior, ou não, em qualquer página ancestory (ou seja, um post sobre um site sem um blog "página" atribuído).
Se a página atual tem ancestory, um array contendo a hierarquia "acima" da página (pais, avós, etc) podem ser recuperadas usando a get_post_ancestors função. O último valor da matriz que a função retorna é sempre o ID do nível superior página. Ir direto ao último valor utilizando PHP final da função. Se a condição falhar (não ancestory), o código simplesmente pega a página atual ID.
Tenha em mente que, em muitos casos, esta informação só é útil quando WordPress está trabalhando com uma página real (em oposição a um post, 404 páginas, etc.) Por isso, esta função e que usa o código top_level variável, podem precisar de ser acondicionada no interior de um controlo que confirma que o WordPress está carregando uma página: ver o is_page () function.
5. Breadcrumb Navigation - sem um plug-in

Existem muitas extensões de WordPress que geram breadcrumb navegação. Mas você pode realmente criar personalizado breadcrumb navegação apenas com um punhado de linhas de código do modelo, abrindo um maior controlo e, potencialmente, menos sobrecarga. Esta abordagem baseia-pão para o get_post_ancestors função discutido em ponta # 4.
Essa dica não irá rever formatação de pão; para este exemplo, o pão vai ser abandonada em um desordenadas bala lista. Como acontece, as listas de relações tendem a ser um bom modelo para os motores de busca, e você pode formatar-los quase qualquer forma que quiser.
Para começar, aqui está uma base de pão implemenation que trata apenas de páginas e inclui um breadcrumb para "casa" (a primeira página do site), no início da lista. Dependendo do desenho de um determinado modelo, alguns controlos podem ter necessidade de colocar em torno deste código. Neste exemplo, presume-se que este código vai ser colocado no arquivo header.php modelo, que as migalhas devem aparecer apenas nas páginas, e que não deve aparecer na primeira página. A página atual e front page link será também atribuído especial classes de estilo CSS fins.
if (is_page () & &! is_front_page ()) (
echo '<ul id="breadcrumbs">';
echo '<li class="front_page"> <a href="'.get_bloginfo('url').'"> Início </ a> </ td>';
$ post_ancestors = get_post_ancestors ($ post);
if ($ post_ancestors) (
$ post_ancestors = array_reverse ($ post_ancestors);
foreach ($ $ post_ancestors como miolo)
echo '<li> <a href="'.get_permalink($crumb).'">'. get_the_title ($ migalha ).'</ a> </ td> ';
)
echo '<li class="current"> <a href="'.get_permalink().'">'. get_the_title ().'</ a> </ td> ';
echo "</ ul> ';
)Se a aplicação WordPress tem uma página estática e que tenha sido atribuído um "blog" página, uma pode querer mostrar o breadcrumb caminho para a página do blog. Isto pode ser conseguido através da adição
is_home()para verificar a condição no início:
if ((is_page () & &! is_front_page ()) | | is_home ()) (
...A próxima evolução deste código implica a inclusão do pão de cada categoria, bem como arquivos individuais lugares. Note que o WordPress permite lugares a ser atribuído a várias categorias, para evitar que a nossa pista breadcrumb pesado, o script simplesmente agarrar a primeira categoria atribuída ao cargo. Por razões de simplicidade, o exemplo vai ser assumida hierárquica categorias que não estão em jogo.
if ((is_page () & &! is_front_page ()) | | is_home () | | is_category () | | is_single ()) (
echo '<ul id="breadcrumbs">';
echo '<li class="front_page"> <a href="'.get_bloginfo('url').'"> Início </ a> </ td>';
$ post_ancestors = get_post_ancestors ($ post);
if ($ post_ancestors) (
$ post_ancestors = array_reverse ($ post_ancestors);
foreach ($ $ post_ancestors como miolo)
echo '<li> <a href="'.get_permalink($crumb).'">'. get_the_title ($ migalha ).'</ a> </ td> ';
)
if (is_category () | | is_single ()) (
$ categoria = get_the_category ();
echo '<li> <a href="'.get_category_link($category[0]-> cat_ID ).'">'.$ categoria [0] -> cat_name'. </ a> </ td> ';
)
if (! is_category ())
echo '<li class="current"> <a href="'.get_permalink().'">'. get_the_title ().'</ a> </ td> ';
echo "</ ul> ';
)Existem muitas maneiras de estender o breadcrumb navegação mais. Por exemplo, um programador pode querer pão para os diferentes tipos de arquivos (tags, mês, etc), ou podem incorporar categorias hierárquicas. Embora este artigo não irá percorrer todas as possíveis execução, as amostras acima deverá lhe fornecer uma estrutura sólida para trabalhar.
6. Criar conteúdo elementos sidebar
Muitos sites característica distinta sidebars com elementos comuns representadas em todo o site, tais como a secção navegação, informações de contato, crachás e especiais (ou seja, "Sigam-nos Twitter"). Também é comum que os sites a característica mais básica HTML blocos na barra lateral que estão associados a uma única página ou várias páginas que podem ou não ser ligados em qualquer forma lógica.
Alguns sistemas de gerenciamento de conteúdo permitir a idéia de múltiplos conteúdos blocos fora da caixa. Por exemplo, CitySoft Comunidade Empresarial permite que o editor para seleccionar a partir de uma variedade de páginas, alguns dos quais incluem vários blocos de conteúdo que pode ser editado de forma independente. Isto é conveniente para alguns, mas ele tem algumas limitações: (1), pode ser difícil de integrar o esquema prefabbed blocos em áreas incomuns no site modelo global, e (2), reutilizando alguns desses blocos conteúdo para múltiplas páginas é Não é possível (sem alguns adicionais, complicado personalizado desenvolvimento).
Veja como implementar reutilizáveis "sidebar elementos" no WordPress. Por razões de simplicidade, este exemplo assume que apenas um elemento da barra lateral pode ser atribuído a uma página.
Fundamentalmente, estes elementos serão simplesmente sidebar páginas. Embora não essenciais, pode ser uma boa prática organizacional para criar uma página chamada "sidebars" que irá conter todas as páginas da barra lateral. Tenha cuidado para excluir esta página no nível superior de navegação e qualquer outra página ou listas sitemaps. Sidebar elementos são então construídas como "privado" páginas (de modo a que não podem ser pesquisadas independentemente ou visualizadas pelos visitantes geral), com a "sidebar" contentor página definida como a página pai. O título da barra lateral página será utilizada para o título da barra lateral elemento.

Quando a barra lateral, foi criado, o editor irá precisar do ID da barra lateral página. A maneira mais fácil de descobrir isso é por material sobre o título na página do admin página lista e, olhando para o "id" na URL (normalmente no statusbar).
Para atribuir a barra lateral para uma página, um novo campo personalizado é atribuído para a página que irá manter a barra lateral chamada "sidebar". O valor para este campo é o ID da página na barra lateral página.
Agora, na barra lateral modelo arquivo (ou sempre que a barra lateral elemento deve aparecer), cerca de código é incluído para que o controlo do campo personalizado, e - se for encontrado - gotas na referida página. Para tornar o processo de queda da barra lateral conteúdo da página um pouco mais simples, o exemplo vai usar o peso leve plug-in, Melhor Incluir página. Aqui está o código, que também cai "h2" tags de título da página:
$ sidebar_pg = get_post_meta ($ post-> ID, 'sidebar', true);
if (function_exists ( 'iinclude_page') & & $ sidebar_pg) (
include_page ($ sidebar_pg, 'Displaytitle = true & titleBefore = <h2> & titleAfter = </ h2>
& displayStyle = DT_FULL_CONTENT & allowStatus = publicar, privado ');
)7. Feature lugares selecionados na primeira página
Muitos CMS implementações característica alguns itens selecionados a partir do blog feed na página inicial, ou mesmo em todo o site em uma barra lateral ou rodapé elemento. Conteúdo editores são, sabiamente, seletivo sobre o que merece uma página frontal mencionar. Veja como aplicar uma seletiva blog feed que pode ser colocado em uma página frontal modelo ou em qualquer outra parte do desenho.
Uma categoria especial é necessário para classificar mensagens como "Destaque", uma categoria denominada "Destaque" ou "Front Page" é uma boa convenção. Para o conteúdo editor, marcando um lugar de "destaque" é tão simples como adicioná-lo a esta categoria (lembre-se: lugares pode ter múltiplas categorias). No lado do modelo, o ID do "destaque" categoria será necessária. A maneira mais fácil de encontrar a categoria ID é por material sobre a categoria "Editar" dentro WordPress administração e observando o ID no URL (normalmente na barra de status).
Usando este ID ( "4" no exemplo), bem como o número de postos de trabalho a funcionalidade na home page (digamos que três), o seguinte código irá listar os lugares featured início com a recente queridos.
echo "<h3> Blog Posts </ h3>";
echo "<ul>";
$ feat_posts = get_posts ( 'numberposts = 4 & categoria = 71');
foreach ($ $ feat_posts como proeza) (
echo '<li> <a href="'.get_permalink($feat-> ID ).'">'.$ feat-> post_title'. </ a> </ td> ';
)
echo "</ ul>";Tal como acontece com os outros exemplos, este código pode ser prorrogado em um número de maneiras. Por exemplo, o SGE Corporation frente página apresenta o trecho para o mais recente item. O trecho pode ser manualmente inseridos no "trecho" campo ou puxado automaticamente (se nenhum outro for fornecido) segurando um certo número de caracteres a partir do início do post do conteúdo.
8. Destaque actual posto da categoria
WordPress página listas atribuir classes especiais para cada item, incluindo as classes que indicam se uma página é a página atual, uma página pai, um antepassado página, e assim por diante. Categoria listas fazer atribuir uma classe especial
current-cata lista apropriada itens quando o usuário está navegando uma categoria do arquivo. Infelizmente, as categorias não têm, por padrão, obter essa classe especial que lhes forem atribuídas quando o usuário está em um lugar dentro da categoria. No entanto, um padrão pode substituir esta limitação segurando a actual categoria ID e passando-o para a função wp_list_categories.
$ categoria = get_the_category ();
wp_list_categories ( 'current_category ='. $ categoria [0] -> cat_ID);Note que existe uma significativa desvantagem para esta abordagem - apenas algumas categorias podem ser passadas para a lista categorias função. Portanto, se um post é atribuído a várias categorias, apenas a primeira categoria será destacada. No entanto, se um site possui categorias distintas (digamos um feed de notícias e um editorial alimentação), isto pode ajudar um modelo promotor tratar a categoria mais como uma página navegação item.
fonte: Smashing Magazine de Jacob Goldman
Technorati : Desenvolvendo um templante para wordpress
Del.icio.us : Desenvolvendo um templante para wordpress
Zooomr : Desenvolvendo um templante para wordpress
Flickr : Desenvolvendo um templante para wordpress



0 comentários: