Suporte » Ajustando o WordPress » is_page e query_post

  • Resolvido João Netto

    (@nettojp)


    Meu problema é mesmo desse topico:

    http://wordpress.org/support/topic/page-template-query_posts-breaks-is_page

    Mas segui isso que foi passado e não resolveu 🙁

    Meu código é esse aqui:

    ————-
    Pagina blog:
    ————-

    <?php if (have_posts()): while (have_posts()) : the_post();?>

    <h2><?php the_title();?></h2>
    <?php the_content(); ?>
    <?php endwhile; else:?><!–FECHA LOOP–>
    <?php endif;?>
    <?php query_posts(”);?>
    <?php if (have_posts()): while (have_posts()) : the_post();?>

    <?php the_time(‘j M Y’);?>
    <?php the_title();?>
    <?php the_advanced_excerpt(‘length=300’);?>

    <?php endwhile; else:?><!–FECHA LOOP–>
    <?php endif;?>
    <?php
    $wp_query->is_page = true;

    get_sidebar();
    ?>
    ——————
    Página sidebar:
    ——————
    ……

    if(is_page(‘blog’))
    {
    wp_list_categories(‘orderby=name&exclude=1&title_li=’);
    }

Visualizando 7 respostas - 1 até 7 (de um total de 7)
  • Agora que vi q postei em local errado, desculpe, se puder mover para local certo agradeceria.

    Atenciosamente

    João

    Motivo para ‘Sobre o funcionamento e resolução de problemas’.
    Por favor explique o problema em português para que possamos te ajudar.

    O problema é o seguinte:

    Eu quero que na pagina Blog exiba o texto da pagina estática Blog(Modelo criado para ela blog.php) que criei no admin e também exiba uma lista de Post recentes e no sidebar exiba a lista de todas categorias.

    Para isso eu criei uma condição no sidebar para só exibir as categorias se estiver na página blog.

    Código na sidebar:

    if(is_page('blog'))
    {
    wp_list_categories('orderby=name&exclude=1&title_li=');
    }

    O problema é que se eu uso query_posts(”) na pagina Blog a condição na sidebar é ignorada e não exibe a lista das categorias.

    Se eu remover o query_posts(”) exibe as categorias normal e a condição na sidebar é aceita… mas dai sem o query_posts(”) não exibe a lista de post na página blog.

    Código da página Blog:

    <?php if (have_posts()): while (have_posts()) : the_post();?>
    
    <h2><?php the_title();?></h2>
    <?php the_content(); ?>
    <?php endwhile; else:?><!--FECHA LOOP-->
    <?php endif;?>
    <?php query_posts('');?>
    <?php if (have_posts()): while (have_posts()) : the_post();?>
    
    <?php the_time('j M Y');?>
    <?php the_title();?>
    <?php the_advanced_excerpt('length=300');?>
    
    <?php endwhile; else:?><!--FECHA LOOP-->
    <?php endif;?>
    <?php
    $wp_query->is_page = true;
    
    get_sidebar();
    ?>

    Aguardo ajuda pois só falta isso para eu finalizar a página.

    Atenciosamente

    João Netto

    Tenta colocar o código
    <?php wp_reset_query(); ?>
    antes do
    if(is_page('blog'))

    Se não funcionar, vc vai ter que substituir o loop existente, que usa query_posts, por outro loop usando get_posts. É bem tranquilo, mas acho que a solução acima deve funcionar.
    http://codex.wordpress.org/Template_Tags/get_posts

    Realmente funcionou.

    Adicionei <?php wp_reset_query(); ?> antes do if(is_page('blog'))

    Poderia me explicar o porque, para que sirva de aprendizado não só de solução.

    Muito obrigado por enquanto.

    Atenciosamente

    João Netto

    É o seguinte: quando vc carrega uma página qualquer no WP, ele monta uma query automaticamente, para definir quais posts serão carregados. Quando vc usa o query_posts, vc “bagunça” essa definição padrão, então o wp não sabe mais se é página, post, se é arquivo de categorias, etc.

    Com o reset_query vc manda ele zerar a query e voltar ao valor original.

    entendi, obrigado, tópico fechado

Visualizando 7 respostas - 1 até 7 (de um total de 7)
  • O tópico ‘is_page e query_post’ está fechado para novas respostas.