Confesso que não acho uma boa idéia fazer isso, mas se quiser mesmo fazer.
Basta adicionar ao seu function
function wo_random_post_tag($query){
if ($query->is_tag){
$query->set('orderby', 'rand');
$query->set('showposts', 1);
}
return $query;
}
add_filter('pre_get_posts','wo_random_post_tag');
Muito obrigado, funcionou exatamento como eu esperava.
Gostaria apenas de saber porque não é uma boa idéia.
Não é nada em relação a desempenho ou algo do tipo, não se preocupe.
Só não acho uma boa idéia porque mudar o funcionamento padrão de um recurso que as pessoas já estão acostumadas, ou deveriam estar.
E esse tipo de mudança pode trazer confusão aos seus leitores, qualquer coisa que traga confusão ou perda de tempo prejudica o retorno do visitante ao site.
Imagina um leigo ao clicar na tag e só um post aparece, ai ele vai para outra tag e só mais um outro post aparece.
A princípio ele pode achar que só tem um único post mesmo nesta tag e não procurar mais, visitando todas as suas tags uma a uma ele pode achar que vc tem menos conteúdo do que realmente tem.
Pra ser sincero acho que até um usuário acostumado com o sistema de tags vai pensar a mesma coisa, mesmo que nas suas tags tenha a contagem de posts isso pode trazer confusão.
Obrigado pela ajuda. É um projeto de um trabalho que a pessoa pediu exatamente isso.
Aproveito sua prontidão para tirar mais uma dúvida:
Como eu faço para exibir esse post selecionado direto ao clicar na tag, aparecendo assim tudo, inclusive a área onde fazem os comentários, porque no momento ele mostra apenas um post ao clicar na tag, mas nao entra no post em si.
Agradeço desde já!
A essa é muito fácil, manda uma mais difícil vai rsrsrsrs.
Adiciona ao function.php logo a baixo da outra função
Créditos: http://wpsnipp.com
Link direto: http://wpsnipp.com/index.php/cat/redirect-to-a-single-post-if-one-post-in-category-or-tag/
function redirect_to_post(){
global $wp_query;
if( is_tag() && $wp_query->post_count == 1 ){
the_post();
$post_url = get_permalink();
wp_redirect( $post_url );
}
} add_action('template_redirect', 'redirect_to_post');
Coloquei esse codigo e quando dei update deu a seguinte mensagem: “Parse error: syntax error, unexpected ‘;’ in /home/anatomia/public_html/wp-content/themes/twentyten/functions.php on line 521”
E agora não consigo entrar em nenhuma área do site que dá a mesma mensagem. O que eu faço agora?
Entre por ftp e baixe o arquivo function.php e vá nesta linha 521 e tente corrigir o código.
Vc colocou ele de alguma forma errada que está dando erro com o ;
delete as funções e coloque assim
function wo_random_post_tag($query){
if ($query->is_tag){
$query->set('orderby', 'rand');
$query->set('showposts', 1);
}
return $query;
}
add_filter('pre_get_posts','wo_random_post_tag');
function redirect_to_post(){
global $wp_query;
if( is_tag() && $wp_query->post_count == 1 ){
the_post();
$post_url = get_permalink();
wp_redirect( $post_url );
}
}
add_action('template_redirect', 'redirect_to_post');
Depois envie novamente o arquivo por ftp
Cara suas soluções foram todas ótimas e muito rápidas.
Tenho mais uma dúvida: como eu faço para atualizar o wordpress sem perder os códigos e tal, pq não da pra fazer o automático pois não usamos ftp e sim ssh.
arthurteixeira ai eu vou ficar te devendo, nem sei o que seria ssh e eu só sei de atualizações via ftp ou automático pelo sistema.
De qualquer forma faça uma backup de tudo que puder antes de tentar alguma coisa.
Bom de qualquer forma obrigado, e eu consegui atualizar já.
Sua ajuda foi fundamental na execução do meu trabalho=)