Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

[SOLUCIONADO] Dudas con plantillas category-slug.php

Estas en el tema de Dudas con plantillas category-slug.php en el foro de WordPress en Foros del Web. Amigos del foro del Web Solicito su ayuda , ya que estoy confeccionando mi primera plantilla y tengo algunas dudas no se si son errores ...
  #1 (permalink)  
Antiguo 09/12/2013, 05:56
 
Fecha de Ingreso: mayo-2011
Mensajes: 101
Antigüedad: 12 años, 11 meses
Puntos: 5
Dudas con plantillas category-slug.php

Amigos del foro del Web

Solicito su ayuda , ya que estoy confeccionando mi primera plantilla y tengo algunas dudas no se si son errores y espero que me puedan ayudar......

Actualmente tengo 3 categorías "Noticias1", "Noticias2", "Noticias3" no son hijas de la 1, son independientes una de la otra. Cree una plantilla para cada una de las categorías y están llamadas con sus respectivos archivos los cuales son "category-noticia1.php", "category-noticia2.php", "category-noticia3.php"

Todo funcionan bien, llamadas con sus respectivos thumbnails. El problema o la duda que tengo es que cuando realizo el llamado por ejemplo a "category-noticia1.php" me muestra todas los post de categoría de las noticia 1 pero más los post de"Noticias2", "Noticias3" y me pasa con todos.

Mi condigo es el siguiente, la estructura es el mismo para todos. Solo cambio el Query:


Código PHP:
<?php get_header(); ?>

<div id="inner-content">
<div id="breadcrumb"><?php the_breadcrumbs(); ?></div>

<div class="left">
    
    <h1>Noticias 1</h1>
    <?php
        $noticia1 
= new WP_Query();
        
$noticia1-> query ('catgory_name=Noticia1&showposts=3'); 
    while (
$noticia1 -> have_posts() ) : $noticia1 -> the_post(); ?>

 <!-- entradas -->
<article class="news">

<div class="thumbnail-news">
<a href="<?php the_permalink(); ?>" class="fancybox" rel="gallery1" title="<?php the_title(); ?>">
<span id="hover-news"></span>
<?php if ( has_post_thumbnail() ) { the_post_thumbnail('homepage-thumb'); } ?></a>
</div>

<div class="post-text">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Enlace a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<small>Publicado el <?php the_time('d F Y'); ?></small>

<div class="meta-news">
    <ul>
    <li class="category"><p><?php the_category(); ?></p></li>
    <li class="tags"><p><?php the_tags(); ?></p></li>
    <li class="user"><p><?php the_author_posts_link(); ?></p></li>
    </ul>
</div>

<div class="excerpt">
<?php echo get_excerpt(90); ?>
<a  class="leer-mas" href="<?php the_permalink(); ?>">Leer más &raquo;</a>
</div>
</div>
</article>
<?php endwhile; ?>

<!-- page-navigation -->
<?php next_posts_link("← Anterior ");?>
<?php previous_posts_link
("Siguiente →");?> 
<!--ENDS page-navigation -->

</div> <!-- END left -->

<!-- sidebar -->
<?php get_sidebar(); ?>

<div class="clearfix"></div>
</div><!-- END inner-content -->
<?php get_footer(); ?>
  #2 (permalink)  
Antiguo 09/12/2013, 06:12
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 1 mes
Puntos: 656
Respuesta: Dudas con plantillas category-slug.php

En tu propio código, tenés un error muy pequeño pero que marca la diferencia, en "category_name" omitiste una letra. Además showposts ya no se usa, en su lugar colocá posts_per_page. Para mas info:

http://codex.wordpress.org/Class_Reference/WP_Query

Cita:
Iniciado por pinguisport85 Ver Mensaje

Código PHP:

    <?php
        $noticia1 
= new WP_Query();
        
$noticia1-> query ('catgory_name=Noticia1&showposts=3'); 
    while (
$noticia1 -> have_posts() ) : $noticia1 -> the_post(); ?>
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #3 (permalink)  
Antiguo 09/12/2013, 06:29
 
Fecha de Ingreso: mayo-2011
Mensajes: 101
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Dudas con plantillas category-slug.php

Estimado

Seria de esta forma?

Código PHP:
<?php 
        $noticia1 
= new WP_Query(); 
        
$noticia1-> query ('posts_per_page=3');  
    while (
$noticia1 -> have_posts() ) : $noticia1 -> the_post(); ?>
  #4 (permalink)  
Antiguo 09/12/2013, 07:01
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 10 años, 5 meses
Puntos: 49
Respuesta: Dudas con plantillas category-slug.php

Tu problema es que no indicas ninguna consulta a WP_Query(). La consulta debe indicarse cuando instancias el objeto. Un ejemplo:

Código PHP:
$consulta = new WP_Query'category_name=Noticia1' ); 
Tu no estás indicando ninguna consulta a la clase WP_Query por lo que rescupera todas las noticias de tu blog. La siguiente línea no puede funcionar:

Código PHP:
$noticia1-> query ('posts_per_page=3'); 
El objetivo de la propiedad $query es almacenar la consulta que indicaste al crear el objeto a modo de "recordatorio". No puedes alterarlo a tu antojo:

http://codex.wordpress.org/Class_Reference/WP_Query#Properties

Ese es el fallo más grave de tu código, pero no el único, ya que como dice Nekko te comiste una letra al escribir "category_name" y pusiste "catgory_name".

Última edición por AlejandroGalvez; 09/12/2013 a las 07:19
  #5 (permalink)  
Antiguo 09/12/2013, 08:46
 
Fecha de Ingreso: mayo-2011
Mensajes: 101
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Dudas con plantillas category-slug.php

Discula Alejadro, soy poco novato en esto , pero entonces mi solución seria así?


Código PHP:

<!-- Si utilizo el nombre de la categoría o slug -->
<?php  
        $noticia1 
= new WP_Query('category_name=Noticia1');  
        
$noticia1-> query ('posts_per_page=3');   
    while (
$noticia1 -> have_posts() ) : $noticia1 -> the_post(); ?>
Ó

Código PHP:
<!-- Si utilizo el ID de la categoría  -->
<?php  
        $noticia1 
= new WP_Query('cat=20');  
        
$noticia1-> query ('posts_per_page=3');   
    while (
$noticia1 -> have_posts() ) : $noticia1 -> the_post(); ?>
  #6 (permalink)  
Antiguo 09/12/2013, 08:55
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 10 años, 5 meses
Puntos: 49
Respuesta: Dudas con plantillas category-slug.php

No no, TODA la consulta debe indicarse al inicializar WP_Query:

Código PHP:
<!-- Si utilizo el nombre de la categoría o slug --> 
<?php   
        $noticia1 
= new WP_Query('category_name=Noticia1&posts_per_page=3');    
    while (
$noticia1 -> have_posts() ) : $noticia1 -> the_post(); ?>
Como dije antes no puedes utilizar $query ( $noticia1->query( 'bla bla bla' ); ) dado que es una propiedad informativa, no un método o función.
  #7 (permalink)  
Antiguo 09/12/2013, 13:22
 
Fecha de Ingreso: mayo-2011
Mensajes: 101
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Dudas con plantillas category-slug.php

ahora si... y como podría hacer funcionar el paginador ya que no me funciona, mi códigopara ello es así..


Código PHP:
<?php get_header(); ?>

<div id="inner-content">
<div id="breadcrumb"><?php the_breadcrumbs(); ?></div>

<div class="left">
    <h1><?php single_cat_title(); ?></h1>
    <?php
        $noticia1 
= new WP_Query('category_name=noticia1&posts_per_page=6'.$paged);        
    while (
$noticia1 -> have_posts() ) : $noticia1 -> the_post(); ?>

 <!-- entradas -->
<article class="news">
<!-- Aqui muestro mi diseño propio de noticias --->
</article>

<?php endwhile;?>

<!-- Paginación -->    
<div class=”navigation”>
<div class=”alignleft”><?php next_posts_link(&laquoEntradas antiguas’?></div>
<div class=”alignright”><?php previous_posts_link(‘Entradas recientes &raquo;?></div>
</div>
<?php $wp_query null?>


</div> <!-- END left -->

<!-- sidebar -->
<?php get_sidebar(); ?>

<div class="clearfix"></div>
</div><!-- END inner-content -->
<?php get_footer(); ?>
  #8 (permalink)  
Antiguo 09/12/2013, 13:52
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 10 años, 5 meses
Puntos: 49
Respuesta: Dudas con plantillas category-slug.php

Como has realizado una consulta personalizada para listar las noticias no puedes utilizar esas funciones de WordPress para paginar tus resultados dado que están diseñadas para paginar la "main query" o "consulta principal". En otras palabras: la que construye automáticamente WordPress para la página mostrada. Tienes dos opciones:

1- Construir tu propia paginación:

https://codex.wordpress.org/Function_Reference/paginate_links

2- Alterar la consulta principal y convertirla en tu consulta personalizada utilizando query_posts() en lugar de WP_Query:

http://codex.wordpress.org/Function_Reference/query_posts

La 2ª no es recomendable, porque en raras ocasiones hay que utilizar dicha función, pero parece que usarla tiene sentido en tu caso así que puedes hacerlo sin problemas.
  #9 (permalink)  
Antiguo 10/12/2013, 20:42
 
Fecha de Ingreso: mayo-2011
Mensajes: 101
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Dudas con plantillas category-slug.php

estimado

Realice un cambio pero todabia no me funciona, porque sera?.

Código PHP:
<?php $paged = (get_query_var('paged'))? get_query_var('paged'): 1;
            
$args = array(
                
'category_name' => 'mi categoria',
                
'posts_per_page' => 5,
                
'paged' => $paged,                
            );
            
        
$the_query = new WP_Query$args );
        
?>

<!-- loop-->
        <?php while ($the_query -> have_posts() ) : $the_query -> the_post(); ?>

Etiquetas: dudas, php, plantillas, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:20.