Menu drop down com optgroup nas categorias do Wordpress

23 de novembro de 2008 por Ederson Spader

Estou fazendo um projeto com o wordpress e tive que usar as categorias como países e as subcategorias como estados. No caso como são apenas poucos paises resolvi agupa-los com a tag html optgroup. Para isso fiz uma função para tal, quebrei um bocado a cabeça para gerar um código válido, visto que a tag optgroup insistia em repetir mais que o desejado.

A tag optgroup para quem não conhece:


<select name="" id="">

<optgroup label="Brasil">
<option value="11">Fortaleza</option>
<option value="9">Rio Grande do Sul</option>
<option value="5">Santa Catarina</option>
<option value="8">São Paulo</option>
</optgroup>

<optgroup label="Portugal">
<option value="7">Faro</option>
<option value="6">Lisboa</option>
<option value="10">Porto</option>
</optgroup>

</select>

Resultado final gerado pelo navegador

optgroup

optgroup


Vamos agora o que interessa, a função em php para optgroup


<?php
function categoria() {

// No nosso caso usei: exclude=1 para excluir a categoria default
// Para parametros de get_categories, visite abaixo:
// http://codex.wordpress.org/Function_Reference/get_categories

$categorias_array = get_categories('exclude=1');

$output     = '<select name="categoria" id="categoria">' . "\n";
$output .= '<option value="0">Selecione a categoria</option>' . "\n";

foreach ($categorias_array as $categoria) {
if($categoria->parent == 0){ // As categorias pai tem sempre o parent = 0.
$categoria_id = $categoria->term_id; // coloca o valor da variavel com o id da categoria pai
$output .= '<optgroup label="' . $categoria->cat_name . '">' . "\n"; // Monta o optgroup com a categoria pai
foreach($categorias_array as $categoria){ // Percorre o array outra vez
if($categoria->parent ==  $categoria_id){ // compara o valor do parent com o da id da categoria pai
$output .= '<option ' . $selected . ' value="' . $categoria->term_id . '">' . $categoria->cat_name . '</option>' . "\n";
}
}
$output .= '</optgroup>' . "\n";
}
}
$output        .=    '</select>' . "\n";
return $output;
}
?>

Download do código do exemplo: categoria_optgroup

Qualquer coisa, comenta ai!

Artigo da categoria: PHP, Wordpress

Como calcular idade com data de nascimento em PHP

16 de novembro de 2008 por Ederson Spader

Estou fazendo um projeto em PHP utilizando o wordpress e me deparei com uma situação que teria que calcular a idade baseando em sua data de nascimento. Sei que muitos de vocês irão dizer que isto é fácil, sim e é, mas o que vi por ai não me agradou e até tinham scripts que não atualizavam a idade no dia do aniversário.

Script em PHP para calcular a idade com base na data de nascimento


// Valores para calcular
$dia = 10;
$mes = 05;
$ano = 1990;

// Subtrai o ano atual pelo de nascimento.
$idade = date('Y') - $ano;

// Subtrai para atualizar a idade no dia do aniversário.
$dia =    $dia - 1;

// Verifica se o mês atual é menor ou igual ao da data de nascimento.
// Verifica de o dia atual é menor ou igual ao da data de nascimento.
// Caso verdadeiro nas duas expressões é feito uma subtração na variável $idade.
if(date('n') <= $mes & date('j') <= $dia){
$idade--;
};
// Resultado
echo 'você tem ' . $idade . ' anos.';

?>

Artigo da categoria: PHP

Conserte a paginação quando usar query_posts() no wordpress

4 de novembro de 2008 por edersonspader

Se você já tentou colocar um limite no número de posts na página de categoria com query_posts() e depois deparou que a paginação de seu blog não funciona mais, seja ela a paginação normal ou com o plugin pagenavi , eis aqui a solução:

Paginação com query_posts()


<?php

$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=' . $cat . '&paged=' . $page . '&posts_per_page=40');
?>

No meu caso aqui em particular, eu usei o parâmetro posts_per_page=40 para mostrar 40 posts na página de categoria do blog.

Artigo da categoria: Wordpress