WordPress.org

Brasil

Fórum Brasileiro

[resolvido] listar títulos por autor E por determinada categoria (34 posts)

  1. wmker
    Membro
    Publicado 4 anos atrás #

    alou. preciso de ajuda. estou procurando alternativas e está difícil de encontrar solução para este problema.

    o caso: estou construindo um blog que tem diversos autores. Para os autores foram determinadas "n" categorias, sendo que seus posts devem estar vinculados a uma categoria apenas. podem existir inumeros posts de cada autor, no entanto, um post terá somente uma categoria.

    o problema: pretendo que na página de um Autor X sejam listados os títulos dos posts DESTE autor em SOMENTE UMA das categorias.

    alguém sabe como resolver essa?
    agradeço toda a ajuda.

    :] WMK

  2. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    Tipo, xá ver se eu entendi:

    Posts do autor 01

    Categoria 01

    • Post 01
    • Post 03

    Categoria 02

    • Post 10
    • Post 13
    • Post 21

    É isso que você precisa?

  3. wmker
    Membro
    Publicado 4 anos atrás #

    Opa... algo assim:

    Autor 1

    Categoria 01

    • post 1
    • post 3
    • post 28

    Categoria 02

    • post 2
    • post 34
    • post 36

    Autor 2

    Categoria 01

    • post 10
    • post 31
    • post 58

    Categoria 02

    • post 20
    • post 39
    • post 46

    o lance são as categorias que tem um mesmo nome para qualquer autor.

    Isso aí tem alguma saída?

    É isso o qe preciso.

    Valeu!

    :] WMK

  4. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    Não sei se vai rolar porque não testei, mas o plugin Posts by Author quem sabe faça isso. Caso não funcione, dá uma avisada por aqui que existe sim uma solução e, na minha cabeça, ela parece ser bem simples, haha.

    Até.

  5. wmker
    Membro
    Publicado 4 anos atrás #

    Blz, Eduardo! Gracias pela atenção. Mas já testei esse plugin (e outros tantos também), só que ele não é bem o que preciso, principalmente porque não funciona para vários autores num mesmo blog. E além de tudo é bem rudimentar. (O que se poderia fazer é tentar aperfeiçoá-lo...)

    Tou interessado na solução que passa em sua cabeça!
    Eu tb pensei que era bem simples e até agora só me quebrei.

    Mais uma vez, agradeço toda ajuda possível.

    Valeu!

    :] WMK

  6. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    <?php
    /*
     * Template name: Posts por autor
     */
    ?>
    <?php get_header(); ?>
    
    	<h1>Posts</h1>
    	<?php $order = 'user_nicename'; ?>
        <?php $user_ids = $wpdb->get_col("SELECT ID FROM $wpdb->users WHERE ID <> 1 ORDER BY $order"); ?>
        <?php $categorias = get_categories(); ?>
    
        <?php foreach($user_ids as $user_id) : ?>
        <?php $user = get_userdata($user_id); ?>
    
        <?php echo get_avatar($user_id, 80); ?>
        <div class="medico">
        	<h2><?php echo $user->display_name; ?></h2>
        	<span><?php get_avatar($user->user_email); ?></span>
    
    		<?php foreach ($categorias as $categoria) : ?>
    
    	    	<?php query_posts('cat='.$categoria->term_id.'&author='.$user_id); ?>
    	    	<?php if (have_posts()) : ?>
    	    	<h3><?php echo $categoria->cat_name; ?></h3>
    	    	<ul>
    		    	<?php while (have_posts()) : the_post(); ?>
    	    		<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    		    	<?php endwhile; endif; ?>
    	    	</ul>
    
    	    <?php endforeach; ?>
    	</div>
    	<hr />
        <?php endforeach; ?>
    
    <?php get_footer(); ?>

    Taí, meu. Deve funcionar. Por padrão, ele só não pega os posts do admin. Nada muito customizável, mas seria algo bacana de transformar em plugin.

    Programadores, deem pitacos.
    Até!

  7. wmker
    Membro
    Publicado 4 anos atrás #

    Cara, valeu a tentativa e principalmente a ajuda! Porém, não funçou muito bem não ;) ... Aconteceu que ele lista os post, separados por categorias, ordenados pelos autores... mas aparecem os MESMOS posts em TODOS os autores. :P

    Realmente é uma boa idéia fazer um plugin para esta função "listar títulos por autor E por determinada categoria". Quem se habilita???

    Já vi pelos foruns que tem muito cara querendo isso também.

    Encontrei um theme que resolve um pouco essa história: Subtle for WordPress - http://gluedideas.com ... e tou trabalhando nele, ajeitando para o que preciso.

    Mas... (sempre tem um "mas") sua programação é um pouco mais complexa (pelo menos prá mim), e tem funções bem específicas, com a "cara" do theme. Enfim, tá dando prá quebrar o galho, mas tá longe de ser aquela coisa simples que eu tinha em mente.

    Vamolá, Eduardo... vai que sai uma nova solução aí da tua cabeça! Tou na linha aqui, aguardando o que vier.

    Valeu!
    Abs

    :] WMK

  8. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    Cara, funcionou aqui. Ele lista os autores e os posts destes autores, divididos por categorias. E não repetiu nada. E teoricamente pra você ele não deveria repetir mesmo, já que tu disse que cada post só vai estar numa categoria, certo?

    De qualquer forma, eu criei uma imagem pra te mostrar como ficou aqui. Era isso que você precisava, não?

  9. wmker
    Membro
    Publicado 4 anos atrás #

    hummm... estranho isso... para mim realmente não ficou ordenado como a imagem aí de cima...

    era o que eu precisava sim, mas será preciso verificar porque o filtro de posts por autor não funcionou como deveria no meu caso.

    é possível que algum plugin esteja interferindo?

  10. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    Estranho. Faz assim: passa uma imagem de como ficou aí e copia o código aqui no fórum pra gente tentar ver qualé!

  11. serginhosant
    Membro
    Publicado 4 anos atrás #

    Pessoal

    aproveitando esse post, tenho um problema parecido.

    No meu blog (site) vários autores publicam posts. Como faço para em cada post aparecer a foto do dono do post e de todos os outros posts postados por ele.

    abraços

  12. wmker
    Membro
    Publicado 4 anos atrás #

    Vamolá, Eduardo... tá aqui a imagem.

    e o código:

    <?php
    /*
     * Template name: Posts por autor
     */
    ?>
    <?php get_header(); ?>
    
    	<h1>Posts</h1>
    	<?php $order = 'user_nicename'; ?>
        <?php $user_ids = $wpdb->get_col("SELECT ID FROM $wpdb->users WHERE ID <> 1 ORDER BY $order"); ?>
        <?php $categorias = get_categories(); ?>
    
        <?php foreach($user_ids as $user_id) : ?>
        <?php $user = get_userdata($user_id); ?>
    
        <?php echo get_avatar($user_id, 40); ?>
        <div class="medico">
        	<h2><?php echo $user->display_name; ?></h2>
        	<span><?php get_avatar($user->user_email); ?></span>
    
    		<?php foreach ($categorias as $categoria) : ?>
    
    	    	<?php query_posts('cat='.$categoria->term_id.'&author='.$user_id); ?>
    	    	<?php if (have_posts()) : ?>
    	    	<h3><?php echo $categoria->cat_name; ?></h3>
    	    	<ul>
    		    	<?php while (have_posts()) : the_post(); ?>
    	    		<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    		    	<?php endwhile; endif; ?>
    	    	</ul>
    
    	    <?php endforeach; ?>
    	</div>
    	<hr />
        <?php endforeach; ?>
    
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

    acho que é isso.
    vamo vê qualé.

    faloouu.

    :] WMK

  13. renato_s
    Moderador
    Publicado 4 anos atrás #

    wmker, tenta adicionar isso aqui lá no finzinho do código e vê se ajuda:

    ...
    	<hr />
    	wp_reset_query(); //Insira esta linha.
        <?php endforeach; ?>
    
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

    Muitos loops com query_posts numa mesma página pode dar xabu...

    Se essa solução não funcionar, avisa aqui que podemos tentar outra alternativa, que é subtituir os loops como estão por loops feitos com get_posts.

  14. wmker
    Membro
    Publicado 4 anos atrás #

    Alou, Renato e Eduardo,
    a solução não funçou... tudo igual.

    Novas alternativas serão bem-vindas!

    Tou no aguardo.
    Valeu!

    :] WMK

  15. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    Haha que droga.

    Bem, alguém mais pode testar o código, com e sem a sugestão do Renato? Vamo ver se ele funciona em outras instalações. Aí avisem por aqui.

  16. renato_s
    Moderador
    Publicado 4 anos atrás #

    Faça um back-up primeiro para evitar surpresas desagradáveis e depois tente assim:

    <?php
    /*
     * Template name: Posts por autor
     */
    ?>
    <?php get_header(); ?>
    
    	<h1>Posts</h1>
    	<?php $order = 'user_nicename'; ?>
        <?php $user_ids = $wpdb->get_col("SELECT ID FROM $wpdb->users WHERE ID <> 1 ORDER BY $order"); ?>
        <?php $categorias = get_categories(); ?>
    
        <?php foreach($user_ids as $user_id) : ?>
        <?php $user = get_userdata($user_id); ?>
    
        <?php echo get_avatar($user_id, 40); ?>
        <div class="medico">
        	<h2><?php echo $user->display_name; ?></h2>
        	<span><?php get_avatar($user->user_email); ?></span>
    
    		<?php foreach ($categorias as $categoria) : ?>
    
    	    	<?php $myposts = get_posts('cat='.$categoria->term_id.'&author='.$user_id);?>
    	    	<h3><?php echo $categoria->cat_name; ?></h3>
    	    	<ul>
    	    	<?php foreach($myposts as $post) :?>
    	    		<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    		    	<?php endforeach; ?>
    	    	</ul>
    
    	    <?php endforeach; ?>
    	</div>
    	<hr />
        <?php endforeach; ?>
    
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

    Depois diz se funcionou.

  17. wmker
    Membro
    Publicado 4 anos atrás #

    Opa!
    Não é que funcionou, Renato!!
    Blz!!!

    Grande força! Valeuziz mesmo!!!

    :] WMK

  18. wmker
    Membro
    Publicado 4 anos atrás #

    Mas, não querendo abusar, porque preciso de ajuda mesmo... ainda tem uma coisinha...

    Partindo da minha pergunta inicial e aprimorando-a, pergunto: -Tem como se utilizar deste script e juntá-lo na página do autor (author.php) de modo que ao selecionar um autor (no menu lateral) apareça na página dele somente os nomes das categorias nas quais ele já postou, e que ao se clicar no nome da categoria apareçam os seus posts nesta categoria? Tudo isso num único php. É possível?

    Retomo a pergunta porque o problema ainda é o original: mostrar as categorias (com posts) de um unico autor, sabendo que todos os autores usam as mesmas categorias.

    Se der prá matar essa charada, tá feito!

    De todo modo, agradeço muito a ajuda que me deram até agora! Já tenho meio caminho andado. Valeu mesmo!

    Continuo na busca.

    :] WMK

  19. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    Grande get_posts().

    Pro teu outro problema, vou misturar o get_posts que o Renato colocou. Só adicionei um condicional pra saber se a variável $myposts tá ou não vazia. Se ela estiver, não tem por que mostrar o nome da categoria (a não ser que tu prefira assim). Ele deve listar pra você as categorias do autor já chamado no author.php:

    <?php if(have_posts()) : the_post(); ?>
    	<?php $categorias = get_categories(); ?>
        <div>
        	<h2><?php the_author(); ?></h2>
        	<span><?php echo get_avatar(get_the_author_ID()); ?></span>
    
    		<?php foreach ($categorias as $categoria) : ?>
    
    			<?php $myposts = get_posts('cat='.$categoria->term_id.'&author='.get_the_author_ID());?>
    
    	    	<?php if (!empty($myposts)) : ?>
    	    	<h3><?php echo $categoria->cat_name; ?></h3>
    	    	<ul>
    	    	<?php foreach($myposts as $post) :?>
    	    		<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    		    	<?php endforeach; ?>
    	    	</ul>
    	    	<?php endif; ?>
    
    		<?php endforeach; ?>
    	</div>
    	<?php endif; ?>
  20. wmker
    Membro
    Publicado 4 anos atrás #

    Grande get_post com certeza!

    Cara, tá ficando beleza isso! Grande força mesmo. Beleza pura total!!

    Agora pergunto: como faço para que não apareça o nome da categoria que não tem posts do referido autor??

    Agradeço por mais esta!

    Falooouu...

    Valeu!

    :] WMK

  21. wmker
    Membro
    Publicado 4 anos atrás #

    Opa! Bobeada minha! Já não estão aparecendo as categorias sem posts. :\
    Então, obrigado por essa!

    Resolvido este problema!

    Grande abraço,
    e ótimo trabalho para todos aí!

    :] WMK

  22. wmker
    Membro
    Publicado 4 anos atrás #

    Eduardo, tive que abrir novamente este tópico porque me apareceu um problema que não consigo resolver.

    Do jeito que está o script está muito bom e funcionando.
    Porém, preciso saber:

    Como mostrar ANTES da lista dos post uma lista só com o nome das categorias que já receberam post daquele autor, de modo que ao clicar no nome da categoria a página pule para a lista de posts propriamente. Sei que posso fazer isso com "#name" e tal, mas não sei como colocar a lista em linha das categorias existentes ANTES da lista de categorias+titulos, especificamente logo abaixo do header. Sacou?

    Algo assim:

    - HEADER -
    - categoria 1 | categoria 2 | categoria 5 | categoria 8 -
    - LISTA dos títulos de posts por categoria -
    - e o resto das coisas... -

    Se puderem me ajudar, mais uma vez agradeço imensamente.

    Valeu!

    :] WMK

  23. wmker
    Membro
    Publicado 4 anos atrás #

    Primeiramente agradecendo toda a ajuda a mim dispensada e também desculpando-me pela minha insistência, mas super disposto a resolver esse trecho do site, encontrei uma solução que está bem adequada ao que preciso mas, (sempre tem esse "mas"), não consigo adaptar a solução ao script "posts por autor" (versão do post 1310 neste tópico) aqui debulhado e funcionando.

    Vi em "http://szub.net/vea/" que tem o que preciso. Logo abaixo do header tem "Categories on this page: ... ". E é isso aí que é preciso ajustar ao script. Algo bem assim mesmo!

    Tem como fazer esse ajuste? Ou será necessário refazer todo o script do
    "posts por autor"?

    Fico no aguardo.
    Faloou!
    Valeu!!

    :] WMK

  24. wmker
    Membro
    Publicado 4 anos atrás #

    Alou! Eu de novo....

    Apareceu um outro problema. É a paginação "Next and Previous Links" que não está funcionando neste author.php. Por exemplo, um determinado autor tem 13 posts, mas na barra inferior de navegação (wp-pagenavi) aparece como se existissem mais de 5 páginas! Porém, todas mostram o mesmo conteúdo, e não mostram os 13 posts (pois configurei para 10 por página)... ficando faltantes os demais.

    Tanto o "Next and Previous Links" padrão do WP, quanto o "wp-pagenavi plugin" apresentam o mesmo problema.
    Creio que o Get_Posts tem algo a ver com isso.
    Alguma idéia ou solução??

    o código tá aqui:

    <?php if(have_posts()) : the_post(); ?>
    	<?php $categorias = get_categories('exclude=27'); ?>
    
        <div id="post_auth">
        	<h2><?php the_author(); ?></h2>
        	<span><?php echo get_avatar(get_the_author_ID()); ?></span>
    
    		<?php foreach ($categorias as $categoria) : ?>
    
    			<?php $myposts = get_posts('cat='.$categoria->term_id.'&amp;author='.get_the_author_ID());?>
    
    	    	<?php if (!empty($myposts)) : ?>
    
    	    	<div class="tita"><?php echo $categoria->cat_name; ?></div>
        	    <div class="entrya">
    	    	<ul>
    	    	<?php foreach($myposts as $post) :?>
    	    	<li><?php the_post_thumbnail();?> » <b><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></b> <?php the_excerpt(); ?></li>
    		<?php endforeach; ?>
    	    	</ul>
        	    </div>
    
    	    	<?php endif; ?>
    
    		<?php endforeach; ?>
    	</div>
    
      	<div class="navigation"><?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?></div>
    
    	<?php else : ?>
    
    		<p>Nada encontrado. Tente nova busca.</p>
    
    	<?php endif; ?>

    Agradeço por mais esta mão!
    (além do post anterior... ;)

    Valeu!

    :] WMK

  25. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    Não testei nem sei se vai dar certo, mas faz o teste com os parâmetros de paginação e avisa pra gente aqui!

  26. wmker
    Membro
    Publicado 4 anos atrás #

    Blz, Eduardo, valeu a dica... mas não sei bem como fazer no script atual. Testei de algumas maneiras (a lá meu jeito mesmo, por tentativa e erro) mas não deu certo em nada.

    Pelo que vi na seção que indicou, os parametros de paginação funcionam com o query_posts, e o nosso script aqui chama o get_posts.

    Vi também que o WP-pagenavi plugin não funciona com query_posts. E sobre o get_posts estou aguardando resposta deles. Espero que venha alguma coisa boa de lá, mas tá demorando...

    De qualquer modo, neste caso a melhor solução é a que vale. Portanto, tanto faz para mim utilizar o plugin ou o modo padrão de paginação do wordpress. O que importa é a paginação funcionar.

    Se tiveres alguma boa idéia ou solução, manda bala que tou por aqui!

  27. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    In addition to the parameters listed below under "WordPress 2.5 And Older", get_posts() can also take the parameters that query_posts() can since both functions now use the same database query code internally.

    Na teoria, ele deve funcionar sim! De qualquer forma, eu tento depois também.

  28. wmker
    Membro
    Publicado 4 anos atrás #

    Pois é, Eduardo. Não consegui acertar o código. Tentei de diversas formas, mas não deu. Sempre dá o mesmo problema, aparecem todos os posts do autor numa mesma página e a paginação indica que tem mais uma pagina na sequencia, porém esta mostra os mesmos posts.

    Preciso de ajuda.

    :] WMK

  29. Eduardo Zulian
    Moderador
    Publicado 4 anos atrás #

    Esqueci completamente deste post. Wmker, você conseguiu fazer funcionar?

  30. Eduardo Zulian
    Moderador
    Publicado 3 anos atrás #

    Vou ressucitar o tópico.

    WMK, dá uma olhada neste tópico aqui. Tive um problema parecido esses dias e isso aí me resolveu perfeitamente.

Tópico Encerrado

Este tópico foi encerrado para novas respostas.

About this Topic