Como manter somente os posts do mês na home
-
Como faço para manter somente os posts do mês na home? Existe um jeito de fazer com que os posts dos meses anteriores irem para o arquivo respectivo automaticamente?
-
Coloque antes do Loop da página index.php a seguinte linha:
$mes = date('m'); query_posts('monthnum=' . $mes );
Caso não saiba, o Loop é a estrutura para exibir os posts. Um exemplo:
if ( have_posts() ) : while ( have_posts() ) : the_post();
Lembrando que é a página index.php que fica na pasta de seu tema.
Me desculpa a ignorância, mas tentei colocar essa linha no loop e não deu certo. Estou te mandando o loop e gostaria que você me mostrasse onde exatamente eu poderia inserir essa linha. Agradeço muito sua ajuda.
<div id=”body”>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
<div class=”date”>
<span class=”month”><?php the_time(‘M’) ?></span>
<span class=”day”><?php the_time(‘j’) ?></span>
<span class=”year”><?php the_time(‘Y’) ?></span>
</div>Novamente obrigado pela ajuda.
Ricardo
Em baixo da linha
<div id="body">
É só inserir em baixo a linha:
<?php mes = date('m'); query_posts('monthnum=' . $mes ); ?>
Olha eu novamente aqui… Desculpa de novo, mas coloquei a linha que você me mando eu não funcionou.
Ficou desse jeito:
<?php get_header(); ?>
<div id=”content-container”><div id=”content”>
<div id=”body”>
<?php mes = date(‘m’); query_posts(‘monthnum=’ . $mes ); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
Quando dou um refresh no blog aparece essa mensagem:
Parse error: syntax error, unexpected ‘=’ in /home/content/b/l/e/blendconnect/html/news/wp-content/themes/elegant-grunge/index.php on line 8
Que faço?
Obrigado novamente.
Ricardo
Apague as aspas no código da linha que te passei (linha 8) e digite novamente.
Meu caro amigo. Deve estar acabando com sua paciência. Mil desculpas por isso. Estou tentando, mas está difícil.
Apaguei as aspas no código da linha que você me passou, como mostro abaixo:
<?php get_header(); ?>
<div id=”content-container”><div id=”content”>
<div id=”body”>
<?php mes = date(m); query_posts(monthnum= . $mes ); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
<div class=”date”>
<span class=”month”><?php the_time(‘M’) ?></span>
<span class=”day”><?php the_time(‘j’) ?></span>
<span class=”year”><?php the_time(‘Y’) ?></span>
</div>Dei um refresh no blog e me aparecu essa mensagem:
Parse error: syntax error, unexpected ‘=’ in /home/content/b/l/e/blendconnect/html/news/wp-content/themes/elegant-grunge/index.php on line 8
Me parece ser a mesma mensagem que antes. Fique a vontade de não querer mais me ajudar, pois até eu estou me achando muito chato.
Ibrigado por tudo.
Ricardo
Sem problemas! 🙂
Vamos tentar de outra forma…
Utilize está linha:
<?php mes = date("m"); query_posts(array("monthnum" => $mes)); ?>
Luís
Ainda não foi dessa vez. Coloquei a nova linha e ocorreu o mesmo erro de antes. Aprovetei me antecipando também tirei as aspas e não funcionou de novo.
Com a linha nova ficou assim:
<?php get_header(); ?>
<div id=”content-container”><div id=”content”>
<div id=”body”>
<?php mes = date(“m”); query_posts(array(“monthnum” => $mes)); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
<div class=”date”>
<span class=”month”><?php the_time(‘M’) ?></span>
<span class=”day”><?php the_time(‘j’) ?></span>
<span class=”year”><?php the_time(‘Y’) ?></span>
</div>E o erro que me mostra é o mesmo:
Parse error: syntax error, unexpected ‘=’ in /home/content/b/l/e/blendconnect/html/news/wp-content/themes/elegant-grunge/index.php on line 8
Abraços
Ricardo
Está faltando o $ antes do mes:
<?php $mes = date("m"); query_posts(array("monthnum" => $mes)); ?>
Sinto que estamos chegando perto da solução. O que aconteceu foi o seguinte. Todos os posts anteriores (de julho) sumiram, mesmo quando clico na palavra “julho” no arquivos eles não aparecem. Quando clico no menu “home” também aparece somente os posts de agosto.
Ou seja, independente de onde clico, na palavra “home” do menu ou na palavra “julho” dos arquivos aparecem somente os posts de agosto. Os anteriores sumiram.
Ainda estou com aquele grito: HELP por favor.
O loop ficou dessa forma:
<?php get_header(); ?>
<div id=”content-container”><div id=”content”>
<div id=”body”>
<?php $mes = date(“m”); query_posts(array(“monthnum” => $mes)); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
<div class=”date”>
<span class=”month”><?php the_time(‘M’) ?></span>
<span class=”day”><?php the_time(‘j’) ?></span>
<span class=”year”><?php the_time(‘Y’) ?></span>
</div>Abraços
O que eu gostaria de ver no meu blog é, na home somente os posts do mês atual, mas quando as pessoas clicassem nos arquivos, nos meses anteriores, tivessem acesso aos posts referentes as cada mês anterior.
Abraços novamente
Ricardo
Vc tem um arquivo chamado archive.php?
Se não tiver, copie o index.php que vc modificou, renomeie para o nome acima, retire a linha que vc acrescentou e salve.
Aí deve funcionar.
Desculpe Renato, mas como exatamente eu faria isso?
Eu não tenho nehum arquivo chamado archive.php. O que tenho no meu blog é um widget que mostra o mês atual e os meses anteriores.
O que eu queria era manter na home somente os posts atuais e quem quiser ver os posts anteriores clicaria no respectivo mês.
Eu tentei fazer o que você sugeriu. Copiei o index.php, mas depois não soube o que fazer para renomea-lo e salvar.
Pelo meno no wordpress não consegui fazer isso.
Obrigado novamente pela ajuda.
Abraços
Ricardo
Ricardo, esqueça o que foi passado e tente o seguinte:
Coloque antes do Loop da página index.php a seguinte linha:
if (is_home()) query_posts('monthnum=' . date('m') );
- O tópico ‘Como manter somente os posts do mês na home’ está fechado para novas respostas.