Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

feliphe

Criar arquivo "notícias" separado index

Recommended Posts

Estou com dificuldade para montar um arquivo separado da index, puxando as informações de postagens.

O que quero fazer: na Home page aparecerem apenas 4 postagens e um chamado para "notícias" onde lá estarão todas as postagens.

Quando tento abrir o arquivo noticias.php aparece a seguinte mensagem: Fatal error: Call to undefined function get_header() e assim sucessivamente com todas as funções que retiro do arquivo.

 

Pesquisando descobri o multisite, mas acredito que tenha um modo mais fácil de fazer, afinal, não quero dois sites ou dois templates, quero apenas as postagens separadas da index.

 

Obs: tentei puxar pelo archive.php sem sucesso.

<?php get_header(); ?>
<!--- x --->
<div id="conteudo">
<!--- x --->
    <?php if (have_posts()): while (have_posts()) : the_post();?>
<!--- x --->
    <div id="titulo"<h2><a href="<?php the_Permalink()?>"><?php the_title();?></a></h2></div>
<!--- x --->
    <div id="conteudo_p"><?php echo excerpt('55'); ?></div>
<!--- x --->
    <?php endwhile; else:?> <?php endif;?>
</div>
<!--- x --->
<div id="sidebardireita"><?php include("sidebardireita.php") ;?></div>
<?php get_footer();?>

Agradeço a ajuda de todos :flores:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom meu caro,

 

Creio que para exibir apenas 4 noticias, basta colocar o <?php query_posts('showposts=4');?> antes do loop.

 

Em relação ao erro noticias não sei o pq está ocorrendo. Normalmente chamo conteúdo do tipo "noticias" na page.php.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala feliphe,

 

Desculpa a demora.

 

Bom, eu faria assim. Primeiramente eu iria criar uma categoria em posts chamado "notícias". Após isso iria ver o ID que ela gerou, sendo assim criaria o loop com a ideia de exibir 4 posts, somente da categoria "notícias", após isso iria chamar esse conteúdo na verdade não na page, mas sim na single.php. Assim ele lista apenas o conteúdo único daquela notícia.

 

Supondo que o id seja 2 o meu loop na index ficaria assim:

 

<!-- Faz a query no loop -->
<?php query_posts('cat=2&showposts=4');?>
<!-- Inicia o Loop -->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <!-- Adiciona o titulo -->
        <h1>
            <?php the_title(); ?>
        </h1>
    <!-- Adiciona o conteúdo -->
        <p>
            <?php the_content(); ?>
        </p>
     <!-- Adiciona o link permanente -->
        <p>
            <a href="<?php the_permalink() ?>">Continue lendo...</a>
        </p>
    <!-- Encerra o Loop -->
<?php endwhile; else: ?>       
<?php endif; ?>

Obs: nesse caso ele irá listar todo o conteúdo, mas caso deseje exibir somente algumas palavras você deve usar um plugin de forma a encurtar e resumir a sua noticia, no qual eu vi, você já esta usando no seu código.

 

Já na single.php, basta o loop simples que ele irá exibir o seu conteúdo.

 

Espero ter ajudado.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites
Seu arquivo noticias.php precisa ser uma página
1 - Coloque no topo dela
`
<?php
/**
Template Name: Página de Noticias */
get_header(); ?>
`
2 - No admin crie uma nova página e adicione o modelo de página criado acima Página de Noticias.
E pronto resolvido.

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu, vamos ver se entendi.

Você quer criar 'seções' no seu blog e quer controlar as informações separadamente?

Você pode deixar o seu index.php no padrão, assim, você configura pelo painel quanto posts vai exibir (4 no seu caso).

Você pode criar o arquivo noticias.php e colocar o código necessário para exibir as posts de notícias.

Se você for utilizar categoria o query_posts que o Lucas passou é o suficiente para colocar nesse arquivo.

Quando preciso criar "categorias" diferentes de informação, pelo bem da semântica, crio um tipo de post customizado (custom post type).

Minha sugestão seria:

No functions.php:

add_action( 'init', 'create_posttype' );
function create_posttype() {
  register_post_type( 'noticias',
    array(
      'labels' => array(
          'name' => __( 'Notícias' ),
          'singular_name' => __( 'Notícias' )
      ),
      'menu_icon' => 'dashicons-format-gallery',
      'public' => true,
      'has_archive' => true,
      'rewrite' => array('slug' => 'noticias'),
      'supports' => array(
            'title',
            'editor',
            'excerpt',
            'author',
            'thumbnail',
            'comments',
            'trackbacks',
            'page-attributes'
        ),
    )
  );
}

No noticias.php:

<?php
    $args = array( 'post_type' => 'noticias', 'posts_per_page' => 10 );
  $loop = new WP_Query( $args );
  if ($loop) {
    ?>
    <section id='noticias' class='section'>
      <h3 class='title'>Notícias</h3>
    <?php
    while ( $loop->have_posts() ) : $loop->the_post();
          the_post_thumbnail('large') 
     ?>
       <span class='titulo-noticia'><?php the_title();?></span>
    <?php
    endwhile;
    ?>
    </section>
    <?php
  }
  ?>

E no index.php inclua a linha abaixo, onde você quer que apareçam as notícias:

get_template_part('noticias');

Espero entendido corretamente e ajudado.

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.