Lista de páginas filhas

A partir de uma página filha (exemplo: Vídeos) você cria páginas filhas (exemplo: casamento, paisagem, etc). Para realizar a listagem basta seguir o código abaixo:

$args=array(
	'sort_order'=>'post_name',
	'sort_order'=>'asc',
	'child_of'=>$post->post_parent
);
$pages = get_pages($args);
Anúncios

Fixar post

Uma das formas de destacar um post em uma listagem, por exemplo, é fixando o mesmo.

Como fazer isso?
Para setar na página de Inserção/Atualização do post, no campo “Publicar”, clique em “Editar:

Na sequencia, clique em “Fixar este post na página inicial”:

Como funciona a programação?
Para programar, utilize a função is_sticky (tendo a variável id_post como opcional):
Exemplo para verificar se o post está fixado ou não:

echo is_sticky() ? 'É um post fixado;' : 'Não é um post fixado.';

Exemplo para verificar se o post está fixado ou não em uma lista de post’s. Quando for do tipo fixado, é armazenado em uma variável, senão, é armazenado em outra:

while($query_result->have_posts()){
	$query_result->the_post();
	echo $post->name;
	$aux='<li>
			<a href="'.get_permalink().'">'.get_the_post_thumbnail( $post->ID,'carrossel-home').'
				<h2>'.get_the_title().'</h2>
			</a>
		</li>';
		
	if(is_sticky($post->ID)){
		$prioridade.=$aux;
	}else{
		$lista.=$aux;
	}
}

Referência
Codex

Uma página, quatro possibilidades de impressão

Vamos supor que você tenha uma página e a partir dela será impresso:

  • A lista de post’s de uma determinada tag
  • A lista de post’s de uma determinada categoria
  • A lista de post’s de um determinado autor
  • ou a lista de post’s de um determinado ano e/ou mês
# Imprime o resultado encontrado #
function imprime($resultado){
	$descricao=(!empty($resultado['descricao'])) ? '<p>'.$resultado['descricao'].'</p>' : '';
	return "<h1>Post's ".$resultado["titulo"].$resultado['nome'].'</h1>'.$descricao;
}

# Tag #
# Exemplo de URL: http://localhost/teste/tag/testando/
function tag($busca){
	foreach (get_tags() as $tag){
		if($tag->slug == $busca){
			return $resultado=array("titulo"=>"da tag ", "id" => $tag->term_id, "nome" => $tag->name,"descricao" => $tag->description);
		}
	}
}

# Categoria #
# Exemplo de URL: http://localhost/teste/category/teste/
function category($busca){
	$cat=get_category_by_slug($busca);
	return $resultado=array("titulo"=>" da categoria ", "id" => $cat->term_id, "nome" => $cat->name,"descricao" => $cat->category_description);
}

# Autor #
# Exemplo de ULR: http://localhost/teste/author/admin/ #
function author($busca){
	foreach(get_users() as $u){
		if($u->user_nicename==$busca){
			$user = get_userdata($u->ID);
			return $resultado=array("titulo"=>" do autor ", "id" => $u->ID, "nome" => $user->first_name.' '.$user->last_name,"descricao" => $user->user_description);
		}
	}
}

# Mês e Ano #
# Exemplo de URL: http://localhost/teste/2012/04/ #
# Exemplo de URL: http://localhost/teste/2012/ #
function mes_ano($resultado){
	$mes_escrito = array( 1 => 'Janeiro', 2 => 'Fevereiro', 3 => 'Março', 4 => 'Abril', 5 => 'Maio', 6 => 'Junho', 7 => 'Julho', 8 => 'Agosto', 9 => 'Setembro', 10 => 'Outubro', 11 => 'Novembro', 12 => 'Dezembro');
	
	$nome=(!empty($resultado[3])) ? $resultado[3] : '';
	$nome.=(!empty($resultado[2])) ? '/'.$resultado[2] : '';
	$nome.=(!empty($resultado[1])) ? '/'.$resultado[1] : '';
	
	return $resultado=array("titulo"=>" de ","nome"=>$nome, "descricao"=>'');
}

$url = explode('/',$_SERVER['REQUEST_URI']);

if(array_search('tag',$url)){
	$id=array_search('tag',$url)+1;
	echo imprime(tag($url[$id]));
}elseif(array_search('category',$url)){
	$id=array_search('category',$url)+1;
	echo imprime(category($url[$id]));
}elseif(array_search('author',$url)){
	$id=array_search('author',$url)+1;
	echo imprime(author($url[$id]));
}else{
	preg_match('/([0-9]{4})\/([0-9]{2})?\/([0-9]{2})?/',$_SERVER['REQUEST_URI'], $resultado);
	
	if(!empty($resultado[0])){
		echo imprime(mes_ano($resultado));
	}
}

Problemas com o XML do Wordpress

Você baixou um XML de um WordPress, mexeu e depois subiu no mesmo ou em outro lugar e deu CÁCA?
Os seus problemas acabaram (desde que você saiba mexer com PHP, não os seu problemas continuam :))!

Solução:


Esse primeiro trecho tenta abrir o seu arquivo. Se o seu problema começa nesse ponto, já é um começo.
Caso o problema não é apresentado nesse trecho, tente ler linha a linha do xml utilizando esse exemplo.

Cortando Texto contendo HTML e PHP

<?php 
	//Conteúdo a ser cortado. Pode ser o conteúdo da página, como um texto qualquer.
	$post = get_the_content();
	//Tamanho do texto
	$tamanho = 90;
	
	function partir_texto($texto,$tamanho){
		//Retira todas tags HTML e PHP.
		$texto_limpo = strip_tags($texto);
		//Corta o texto no tamanho desajado.
		$texto_cortado = substr($texto_limpo,0,$tamanho);
		
		return $texto_cortado.'...';
	}
	//Mostrando o conteúdo cortado + ...
	echo partir_texto($post,$tamanho);					
?>

Retirando tags HTML e PHP do texto: strip_tags
Cortando a string: substr

Identificando os valores duplicados no array

Vamos a mais um desafio. Hoje eu estava com o seguinte problema: eu tinha uma lista de títulos vindos de um link externo e uma lista de títulos vindos do wordpress. O problema é que eu precisava encontrar os títulos duplicados no wordpress e como fazer isso?

Eu vou colocar um exemplo aqui. Esta é a lista vindo do link externo:

<?php
	$link_externo = array(
		"Aaron Neville",
		"Adele",
		"Al Green",
		"Al Jarreau",
		"Alicia Keys",
		"Amy Winehouse",
		"Aretha Franklin",
		"Barry White",
		"Beyoncé",
		"Billy Paul",
		"Bobby Womack",
	);
?>

E este é o conteúdo do WordPress (cheio de títulos duplicados):

<?php
	$wordpress = array(
		"Aaron Neville",
		"Adele",
		"Adele",
		"Al Green",
		"Al Jarreau",
		"Alicia Keys",
		"Alicia Keys",
		"Alicia Keys",
		"Amy Winehouse",
		"Aretha Franklin",
		"Barry White",
		"Beyoncé",
		"Beyoncé",
		"Billy Paul",
		"Bobby Womack",
	);
?>

Primeiro, recorri ao array_search:

<?php
	foreach($link_externo as $le){
		echo $le.' - '.array_search($le,$wordpress)."<br>";
	}
?>

Explicação:
O foreach varre os títulos do link externo e a cada iteração, procura o seu equivalente na lista de títulos do wordpress.

O Resultado:
Aaron Neville – 0
Adele – 1
Al Green – 3
Al Jarreau – 4
Alicia Keys – 5
Amy Winehouse – 8
Aretha Franklin – 9
Barry White – 10
Beyoncé – 11
Billy Paul – 13
Bobby Womack – 14

Nota-se que o array_search retorna o primeiro ID do valor encontrado. Exemplo: Adele tem dois ID’s, 1 e 3. O ID retornado é o primeiro.

Essa função não atendeu as minhas expectativa. Vamos ao próximo.

Tentei o array_diff:

<?php	
	var_dump(array_diff($link_externo,$wordpress));
?>

E o mesmo me retornou:
array
empty

E mais uma vez a minha expectativa não foi atendida. Ai veio a luz: array_count_values!

<?php
	foreach(array_count_values($wordpress) as $lista => $qtd){
		echo $lista." = ".$qtd."<br>";
	}
?>

A função conta as frequências de cada título da lista do wordpress. Com isso, eu consigo saber o quais estão repetidos ou não.
Resultado:
Aaron Neville = 1
Adele = 2
Al Green = 1
Al Jarreau = 1
Alicia Keys = 3
Amy Winehouse = 1
Aretha Franklin = 1
Barry White = 1
Beyoncé = 2
Billy Paul = 1
Bobby Womack = 1

Referências:
array_search
array_diff
array_count_values