Suporte » Desenvolvendo com WordPress » Listagem de posts por categoria com nome do autor e data

  • Olá, estou construindo um portal e estou querendo inserir um código dentro de uma página para me mostrar uma listagem com todos os posts de cada categoria, com nome do autor e data.

    Ficará assim:

    Categoria: Design

    Autor: Vinícius Monteiro
    Título: A arte do design de interfaces
    ———————————-

    Autor: Luciana Alencar
    Título: Designer por designer

    ———————————-

    Categoria: Programação

    Autor: Luis Fernandes
    Título: A leveza do código limpo

    Alguém pode me ajudar?
    Obrigado.

Visualizando 8 respostas - 1 até 8 (de um total de 8)
  • ffgmusic

    dentro do loop de cada categoria você precisa inserir a Template Tag das informaçõe que pretende mostrar:

    Nome do autor <?php the_author(); ?> doc aqui

    Data do post <?php the_date(); ?> doc aqui

    Se não conseguir resolver, é só chamar.

    Obrigado, Dhony, mas ainda não consegui.
    Estou inserindo este código para a listagem, mas o que acontece é que se houver mais de um artigo por autor, ele duplica o nome dele. Há alguma maneira de deixar isso automático sem que toda vez eu tenha que escrever o nome da categoria?

    Obrigado.

    <h3>Economia</h3>
    <?php query_posts('cat=13'); ?>
    <?php while (have_posts()): the_post(); ?>
    <li><?php the_author(); ?><br /><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    
    <br />
    <h3>Empreendedor</h3>
    <?php query_posts('cat=8'); ?>
    <?php while (have_posts()): the_post(); ?>
    <li><?php the_author(); ?><br /><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    
    <br />
    <h3>Empreendedor</h3>
    <?php query_posts('cat=11'); ?>
    <?php while (have_posts()): the_post(); ?>
    <li><?php the_author(); ?><br /><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>

    mas o que acontece é que se houver mais de um artigo por autor, ele duplica o nome dele.

    Duplica o nome de quem? do autor ou do título?

    Duplica o nome do autor. Aparece por exemplo:

    Economia
    Luiz José
    Artigo 01

    Luiz José
    Artigo 02

    Ana Silveira
    Artigo 01

    Ola

    Observando o script só há seleção por categoria. O sistema seleciona a categoria indicada e devolve o nome do autor e a data. Por isso duplica, pois há necessidade de filtrar os autores na pesquisa. Isso vai exigir um pouco de PHP.

    Vou começar pelo final. Você quer automatizar as categorias. Se não mudarem constantemente, penso que poderia ser feita com um arquivo texto colocado na pasta do template, contendo em cada linha uma categoria.

    No script deve ser buscado esse arquivo com um código proximo deste abaixo:

    <?php
    $categs = file (‘categorias.txt’);
    ?>

    Pode ser colocado logo no inicio da pesquisa. Talvez seja necessario inserir o caminho completo do arquivo. $categs será um array contendo todo o conteudo das linhas do arquivo. Se chamar http://www.ideatech.com.br/emailcount.php uma variação desse script vai escrever a quantidade de linhas e logo depois as linhas. No caso, só precisa guardar o conteúdo das categorias no array.

    Para fazer funcionar a pesquisa, coloca-a dentro do foreach:

    <?php
    foreach ($categs as $categ) {
    // aqui insere a sua pesquisa, substituindo o numero da categoria por $categ.

    <?php query_posts(‘cat=’.$categ); ?>

    } // fechamento do foreach

    ?>

    Poderia ser criado outro arquivo texto para conter os nomes das categorias e seria montado num loop acima do exemplo.

    Agora vamos filtrar os autores: haverá a necessidade de criar uma função que faça isso. Penso que o ideal seria colocá-lo no functions.php do template. Seria mais ou menos como abaixo: (vou mostrar apenas a linha da pesquisa, não a montagem da função).

    <?php
    $autores = ‘select distinct (coluna nome do autor) from (nome da tabela) where categoria = ‘ . $categ;
    ?>

    O comando SQL “select distinct” guarda a primeira ocorrencia que encontra na coluna. Dessa forma, $autores conteria os nomes dos autores com posts para aquela categoria, sem repetição de nomes.

    Faz novamente outro foreach, aninhado dentro do anterior

    foreach ($categs as $categ) {
    // pesquisa categorias
    $autores = ‘select …

    <?php query_posts(‘cat=’.$categ); ?>

    } // fechamento do foreach

    ?>

    Observa que no script não há seleção de autor. Por isso duplica. Há a necessidade de pesquisar os autores registrados sob a categoria pesquisada. Haveria a necessidade de montar uma função MySQL/PHP para retornar esses autores, que ficaram num array. Depois pesquisar os titulos (por exemplo) levando em consideração a categoria e o autor.

    A pesquisa do SQL deve conter a clausula Distinct, exemplo SELECT DISTINCT Autor FROM wp-tabela WHERE Categoria = $categoria. Essa pesquisa vai retornar todos os autores com posts nessa categoria. Importante: a pesquisa guardará somente a primeira vez que o nome aparecer. Não há duplicação dos nomes. O resultado será guardado num array.

    Depois, basta pesquisar num loop foreach (para cada item do array) e pesquisar o valor do array e a categoria.

    Para deixar automatico o valor das categorias, penso que o mais facil seria fazer um arquivo de texto contendo cada categoria numa linha e hospedado na pasta do template. O codigo PHP lê as linhas e transforma num array.

    A estrutura da pesquisa ficaria assim:

    1. Lê o arquivo de categorias e transforma em array
    2. Faz um loop foreah para as categorias
    3. Para cada categoria faz a pesquisa dos autores daquela categoria
    4. Aninha outro loop foreach para cada autor
    5. Pesquisa o titulo e data de cada post do autor
    6. Escreve a pesquisa
    7. Fecha o foreach do autor
    8. Fecha o foreach da categoria

    Ola

    Observando o script só há seleção por categoria. O sistema seleciona a categoria indicada e devolve o nome do autor e a data. Por isso duplica, pois há necessidade de filtrar os autores na pesquisa. Isso vai exigir um pouco de PHP.

    Vou começar pelo final. Você quer automatizar as categorias. Se não mudarem constantemente, penso que poderia ser feita com um arquivo texto colocado na pasta do template, contendo em cada linha uma categoria.

    No script deve ser buscado esse arquivo com um código proximo deste abaixo:

    <?php
    $categs = file (‘categorias.txt’);
    ?>

    Pode ser colocado logo no inicio da pesquisa. Talvez seja necessario inserir o caminho completo do arquivo. $categs será um array contendo todo o conteudo das linhas do arquivo. Se chamar http://www.ideatech.com.br/emailcount.php uma variação desse script vai escrever a quantidade de linhas e logo depois as linhas. No caso, só precisa guardar o conteúdo das categorias no array.

    Para fazer funcionar a pesquisa, coloca-a dentro do foreach:

    <?php
    foreach ($categs as $categ) {
    // aqui insere a sua pesquisa, substituindo o numero da categoria por $categ.

    <?php query_posts(‘cat=’.$categ); ?>

    } // fechamento do foreach

    ?>

    Poderia ser criado outro arquivo texto para conter os nomes das categorias e seria montado num loop acima do exemplo.

    Agora vamos filtrar os autores: haverá a necessidade de criar uma função que faça isso. Penso que o ideal seria colocá-lo no functions.php do template. Seria mais ou menos como abaixo: (vou mostrar apenas a linha da pesquisa, não a montagem da função).

    <?php
    $autores = ‘select distinct (coluna nome do autor) from (nome da tabela) where categoria = ‘ . $categ;
    ?>

    O comando SQL “select distinct” guarda a primeira ocorrencia que encontra na coluna. Dessa forma, $autores conteria os nomes dos autores com posts para aquela categoria, sem repetição de nomes.

    Faz novamente outro foreach, aninhado dentro do anterior

    foreach ($categs as $categ) {
    // pesquisa categorias
    $autores = ‘select … where (categoria) = ‘.$categ
    foreach ($autores as $autor) {

    // acerta para pesquisar categoria e autor
    <?php query_posts(‘cat=’.$categ.’& autor=’.$autor); ?>

    } fechamento do foreach autor

    } // fechamento do foreach categoria

    ?>

    Depois da pesquisa insere o código normal para montar a página de resposta.

    ffgmusic, tenta montar a proposta. Só não escrevo o código completo porque estou trabalhando, mas a partir de terça-feira, se não conseguir pesquisar pode avisar que escrevo o script e testo.

    Os emails do teste são validos para contato

    abraços

    Jose Kras

    Olá,
    Instalei o WordPress na minha empresa, tudo funciona perfeitamente
    mas, percebi um detalhe. Quando insiro uma tabela com formatções definidas no Microsoft Office Word, ele nem respeita aquela formatação. Ex:
    Criei uma tabela no Word, com a fonte vermelha e a cor de fundo amarela
    inseri ela no wordpress, mas o wordpress apenas permitiu a cor da fonte vermelha, mas o fundo amarelo nem apareceu.
    O que poderia ser? Existiria um plugin para isso?

    Abraços

    @Bruno Reis

    por padrão o editor do WordPress não tem a funcionalidade de inserir e editar tabelas.

    Para isso, use esse plugin http://wordpress.org/extend/plugins/mce-table-buttons/
    ele inclui botões no editor pra você poder inserir e formatar tabelas.

    Acho que você deveria ter aberto outro tópico, porque aqui estamos discutindo sobre Listagem de posts por categoria com nome do autor e data.

    Espero ter ajudado.

Visualizando 8 respostas - 1 até 8 (de um total de 8)
  • O tópico ‘Listagem de posts por categoria com nome do autor e data’ está fechado para novas respostas.