2017-01-15 2 views
0

Je suis lié à faire une page d'archive pour tous les postes de catégorie "alimentaire". J'ai donc créé un fichier php appelé category-food.php et ajouté mon code, mais le code ne fonctionnait pas correctement. J'ai eu du mal à comprendre pourquoi jusqu'à ce que je colle le code sur un autre fichier php, page-food.php. Le code a fini par travailler sur la page-nourriture. Est-ce que quelqu'un a une raison pour laquelle c'est le cas, et comment je peux le faire fonctionner sur category-food.php?Charger plus de bouton ne fonctionne pas pour la page de la catégorie

* le problème principal était que sur le bouton category-food.php mon ajax load more ne s'affichait pas du tout. Mais sur page-food.php, le bouton ajax load more est apparu et a parfaitement fonctionné. C'est le plugin que je utilise pour cela - https://wordpress.org/plugins/easy-load-more/

Le code ...

<?php 
get_header(); 
get_template_part ('inc/carousel-food'); 

$the_query = new WP_Query(array(
    'posts_per_page' => 3, 
    'paged' => get_query_var('paged', 1), 
    'cat' => 10, 
)); 

if ($the_query->have_posts()) { 

    // display #ajax wrapper only if we have posts 
    echo '<div id="ajax"><div class="row">'; 
    $i = 0; 
    while($the_query->have_posts()) { 
      $the_query->the_post(); ?> 

       <?php 
        if($i % 3 == 0) { 
        echo '</div><div class="row">'; 
        } 
       ?> 

       <div class="col-md-4"> 
        <article <?php post_class(); ?> > 
         <?php the_post_thumbnail('medium-thumbnail'); ?> 
          <h2><a class="post-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
          <p class="post-excerpt"><?php echo get_the_excerpt(); ?></p> 
          <?php get_template_part('share-buttons'); ?> 
          <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
          <?php comments_popup_link ('No Comments', '1 Comment', '% Comments', 'comment-count', 'none'); ?> 
        </article> 
       </div> 

    <?php $i++; }//end while 

    echo '</div></div>'; // close the #ajax wrapper after the post list 

    if(get_query_var('paged') < $the_query->max_num_pages) { 
     load_more_button(); 
    }  

} else { // if there are no posts  
    echo '<p>Sorry, no posts matched your criteria.</p>';  
}//end if 

get_footer(); 
?> 

MISE À JOUR CODE

<?php 
get_header(); 
get_template_part ('inc/carousel-food'); 

global $wp_query; 
$wp_query->set('posts_per_page', 3); 
$wp_query->query($wp_query->query_vars); 


$the_query = new WP_Query(array(
    'posts_per_page' => 3, 
    'paged' => get_query_var('paged', 1), 
    'cat' => 10, 
)); 

if ($the_query->have_posts()) { 

    // display #ajax wrapper only if we have posts 
    echo '<div id="ajax"><div class="row">'; 
    $i = 0; 
    while($the_query->have_posts()) { 
      $the_query->the_post(); ?> 

       <?php 
        if($i % 3 == 0) { 
        echo '</div><div class="row">'; 
        } 
       ?> 

       <div class="col-md-4"> 
        <article <?php post_class(); ?> > 
         <?php the_post_thumbnail('medium-thumbnail'); ?> 
          <h2><a class="post-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
          <p class="post-excerpt"><?php echo get_the_excerpt(); ?></p> 
          <?php get_template_part('share-buttons'); ?> 
          <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
          <?php comments_popup_link ('No Comments', '1 Comment', '% Comments', 'comment-count', 'none'); ?> 
        </article> 
       </div> 

    <?php $i++; }//end while 

    echo '</div></div>'; // close the #ajax wrapper after the post list 

    if(get_query_var('paged') < $the_query->max_num_pages) { 
     load_more_button(); 
    }  

} else { // if there are no posts  
    echo '<p>Sorry, no posts matched your criteria.</p>';  
}//end if 

get_footer(); 
?> 

Répondre

0

charge plus facile utilise l'objet global $wp_query pour détecter si la charge plus bouton doit être visible:

//class-easy-load-more.php: 552 
global $wp_query; 
... 
$wp_query->max_num_pages == 1 ? ' ajax-inactive' : '' 

Vous configurez 'posts_per_page' => 3 mais global $wp_query utilise une valeur par défaut de 10. Donc, si dans la catégorie des aliments il y a moins de 10 postes alors max_num_pages est égal à 1 et le bouton load-more serait caché.

Je pense à la page page-food.php$wp_query->max_num_pages est égal à 0 - de sorte que le bouton est visible.

La valeur par défaut que vous pouvez modifier sur la page Paramètres-> Lecture, mais elle affectera toutes les pages de catalogue/d'archivage. Au lieu de cela, vous pouvez changer $wp_query global sur la page category-food.php:

get_header(); 
get_template_part ('inc/carousel-food'); 

global $wp_query; 
$wp_query->set('posts_per_page', 3); 
$wp_query->query($wp_query->query_vars); 

$the_query = new WP_Query(array(
    'posts_per_page' => 3, 
    'paged' => get_query_var('paged', 1), 
    'cat' => 10, 
)); 
... 
+0

Pourriez-vous le mettre dans mon code pour moi? Je ne suis toujours pas le meilleur en PHP et quand j'ai essayé de l'ajouter, je pense que je l'ai mis au mauvais endroit parce que j'ai eu une erreur. – user6738171

+0

quel genre d'erreur? toujours pas de bouton? – Grin

+0

La seule chose sur la page était mon en-tête, et mon carrousel (qui a été foiré) j'ai collé le code que j'ai mis en haut dans ma question. Mais je suis certain que j'ai ajouté le code que vous avez suggéré au mauvais endroit. – user6738171