2010-04-23 4 views
0

J'ai créé une page personnalisée et elle est définie comme ma page d'accueil. Dans cette page personnalisée, je sors le dernier post d'une catégorie spécifique. J'ai également créé une forme de pagination qui, lorsque je clique dessus, entraîne l'utilisateur à single.php. Mon intention pour le single.php est d'avoir deux boucles personnalisées.Comment faire une boucle dans une catégorie spécifique sur single.php dans Wordpress?

boucle personnalisée un Je veux single.php distinguer qu'il est venu de la page d'accueil et boucle à travers tous les postes marqués avec la même catégorie que celle sur la page d'accueil.

Certains de ces messages devront être marqués avec plus d'une catégorie, donc la boucle devra savoir ignorer les autres catégories et faire attention à la catégorie en question. Cela a-t-il du sens?

boucle personnalisée deux Si l'utilisateur n'est pas arrivé de la page d'accueil, single.php va simplement agir comme il le fait normalement par exemple, si l'utilisateur vient de index.php (le blog) ils seront pris à cette deuxième boucle (article de blog)

Cependant, je ne semble pas pouvoir faire la distinction entre les deux boucles, je suis peut-être en train de compliquer les choses, car j'ai une boucle qui encapsule tout et puis je avoir une boucle pour ma pagination personnalisée.

Voici le code ci-dessous pour vous montrer ce que je parle

custompage.php (ensemble à la maison) - Cela fonctionne très bien, mais je posterai juste Incase quelqu'un est capable de ranger it up

<?php query_posts('cat=1'); ?> 

<?php 
$myPosts = new WP_Query(); 
$myPosts->query('showposts=1'); 

if (have_posts()) : 
while ($myPosts->have_posts()) : $myPosts->the_post(); 
?> 

<script type="text/javascript">$.backstretch("<?php $key="image"; echo get_post_meta($post->ID, $key, true);?>");</script> 
<div id="post-<?php the_ID(); ?>" class="info"> 
     <h2><?php the_title(); ?></h2> 
     <ul class="nav"> 
      <?php query_posts('posts_per_page=1&offset=1'); the_post(); ?> 
      <li class="prev"><a href="<?php the_permalink() ?>">Previous</a></li> 
      <?php wp_reset_query(); ?> 
      <li class="next"></li> 
     </ul> 
</div> 
<!-- end .info --> 

<?php endwhile; endif; ?> 
<?php wp_reset_query(); ?> 

single.php - Actuellement brisé

<?php if(in_category('1')) { ?> 
    <!-- start --> 
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
    <div id="post-<?php the_ID(); ?>" class="info"> 
    <script type="text/javascript">$.backstretch("<?php $key="image"; echo get_post_meta($post->ID, $key, true);?>");</script> 
      <h2><?php the_title(); ?></h2> 
      <ul class="nav"> 
       <li class="prev"><?php previous_post_link('%link', '&nbsp;', 'true', '1') ?></li> 
       <li class="next"><?php next_post_link('%link', '&nbsp;', 'true', '1'); ?></li> 
       <!--li class="prev"><?php //previous_post_link('%link', '%title;', 'true', '1') ?></li> 
       <li class="next"><?php //next_post_link('%link', '%title;', 'true', '1'); ?></li--> 
      </ul> 
    </div> 
    <!-- end .info --> 
    <?php endwhile; else: ?> 
    <?php endif; ?> 
    <!-- end --> 

<?php }else{ ?> 

    <div id="content" class="widecolumn" role="main"> 
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
     <div <?php post_class() ?> id="post-<?php the_ID(); ?>"> 
     <h2><?php the_title(); ?></h2> 
     <div class="entry"> 
      <?php the_content('<p class="serif">Read the rest of this entry &raquo;</p>'); ?> 
     </div> 
     </div> 
    <?php comments_template(); ?> 
    <?php endwhile; else: ?> 
     <p>Sorry, no posts matched your criteria.</p> 
    <?php endif; ?> 
    </div> 

<?php } ?> 

Le problèm Il me semble que je suis en train de courir quand un message a été étiqueté avec deux catégories, wordpress ne semble pas pouvoir faire la distinction entre les deux catégories et au lieu de passer à la catégorie suivante, il se casse et par défaut à la seconde boucle.

+0

J'aimerais voir la réponse à cette question. J'ai eu des luttes très similaires. –

+0

Salut Petrescu, et bienvenue dans StackOverflow! Lorsque vous écrivez une question, il n'est pas nécessaire de répéter les balises (comme [wordpress]) dans le titre - c'est mieux placé dans le champ 'tags'. De cette façon, la question est plus facile à lire, et si elle est facile à lire, elle aura plus de chances d'obtenir une réponse. – MaxVT

+0

Merci d'avoir corrigé le titre de mon article Max. – petrescu

Répondre

0

qu'en pensez-vous?

HOMEPAGE 
<?php 
$myPosts = new WP_Query(); 
$myPosts->query('showposts=1&cat=1'); 

if (have_posts()) : 
while ($myPosts->have_posts()) : $myPosts->the_post(); 
?> 

<script type="text/javascript">$.backstretch("<?php $key="image"; echo get_post_meta($post->ID, $key, true);?>");</script> 
<div id="post-<?php the_ID(); ?>" class="info"> 
     <h2><?php the_title(); ?></h2> 
     <ul class="nav"> 
      <?php query_posts('posts_per_page=1&offset=1'); the_post(); ?> 
      <li class="prev"><a href="<?php the_permalink() ?>">Previous</a></li> 
      <?php wp_reset_query(); ?> <-- not sure if this will reset the overall query 
      <li class="next"></li> 
     </ul> 
</div>  
<?php endwhile; endif; ?> 
<?php wp_reset_query(); ?> 

les queryposts (« cat = 1 ») en haut de votre requête exécutée habitude avec cette catégorie, la catégorie devrait être mis dans votre requête personnalisée

$myPosts->query('showposts=1&cat=1'); 

la 2ème page (SINGLE.PHP) avec 2 boucles .. si l'utilisateur vient de la page d'accueil à une seule page, vous voulez joindre la catégorie actuelle à la requête, sans ce mot-clé (alors que sur la page des célibataires par défaut pour parcourir tous les messages) Donc pour la page des célibataires serait le ci-dessous

être bon?

<?php if(in_category('1')) { ?> 
<!-- your selected category --> 
    <!-- start --> 
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
    <div id="post-<?php the_ID(); ?>" class="info"> 
    <script type="text/javascript">$.backstretch("<?php $key="image"; echo get_post_meta($post->ID, $key, true);?>");</script> 
      <h2><?php the_title(); ?></h2> 
      <ul> 
      <php global $post; 
       $my_query = get_posts('numberposts=1&cat=1&offset=-1'); 
       foreach($my_query as $post) : 
      setup_postdata($post); 
      $link = get_post_meta($post->ID, 'site-url', true); ?> 
    <li> 
       <a href="<php echo $link; ?>"><php the_title(); ?></a> 
      </li> 
      <php endforeach; ?> 
      <php global $post; 
       $my_other_query = get_posts('numberposts=1&cat=1&offset=1'); 
       foreach($my_other_query as $post) : 
      setup_postdata($post); 
      $link = get_post_meta($post->ID, 'site-url', true); ?> 
    <li> 
       <a href="<php echo $link; ?>"><php the_title(); ?></a> 
      </li> 
      <php endforeach; ?> 
      </ul> 

    </div> 
    <!-- end .info --> 
    <?php endwhile; else: ?> 
    <?php endif; ?> 
    <!-- end --> 

<?php }else{ 
    include('standard-wp-singles-page-stuff.php'); 
} ?> 

puis une fois votre simple chargement de la page, il vérifiera la catégorie actuelle dans ce poste, si son dans la catégorie 1, alors il chargera votre boucle sur mesure, puis il bouclera sur 2 postes, dans la même catégorie ? vous donnant 2 liens vers d'autres publications. également en utilisant un décalage sur cette requête devrait vous donner un lien vers l'avant et un lien vers l'arrière?

espoir qui aide ..

fixation mise en page de code .. travail na pas trop bien: P

+0

juste semble être en écho sur les titres de la page en cours, sans url dans le href. Je ne suis pas sûr si la boucle elle-même est incorrecte ou si c'est juste ul. – petrescu

+0

désolé m8 .... peut-être un autre gourou Wordpress peut se pencher sur celui-ci .. :) – Marty

Questions connexes