2016-12-23 2 views
2

Ich habe eine Last mehr Schaltfläche mit dem Plugin "Easy laden mehr" (https://wordpress.org/plugins/easy-load-more/). Die Schaltfläche funktioniert großartig, außer dass sie auch dann angezeigt wird, wenn keine weiteren Posts angezeigt werden. Ich möchte, dass es nicht angezeigt wird, wenn nichts mehr zu laden ist. Hat jemand irgendwelche Vorschläge? Danke im Voraus.verstecken Last mehr, wenn nichts mehr zu laden ist

frontend.js

;(function ($) { 
 

 
$(document).ready(function() { 
 
$('.elm-button').on('click', function (e) { 
 
e.preventDefault(); 
 

 
var $that = $(this), 
 
url = $that.attr('data-href'), 
 
nextPage = parseInt($that.attr('data-page'), 10) + 1, 
 
maxPages = parseInt($that.attr('data-max-pages'), 10); 
 

 
$that.addClass('is-loading'); 
 

 
if (url.indexOf('?') > 0) { 
 
url += '&'; 
 
} else { 
 
url += '?'; 
 
} 
 

 
url += 'paged=' + nextPage; 
 

 
$.ajax({ 
 
type : 'POST', 
 
url : url, 
 
dataType: 'text' 
 
}).done(function (data) { 
 

 
$that.removeClass('is-loading'); 
 

 
if ($(elm_button_vars.wrapper).length) { 
 
$(elm_button_vars.wrapper).append($($.parseHTML(data)).find(elm_button_vars.wrapper).addBack(elm_button_vars.wrapper).html()); 
 
} else { 
 
console.log('Please update Easy Load More settings with post list wrapper selector.'); 
 
} 
 

 
if (nextPage == maxPages) { 
 
$that.remove(); 
 
} else { 
 
$that.attr('data-page', nextPage); 
 
} 
 

 
}).fail(function() { 
 
console.log('Ajax failed. Navigating to ' + url + '.'); 
 
window.location.href = url; 
 
}); 
 

 
return false; 
 
}); 
 
}); 
 

 
}(jQuery));

und meine Front-page.php

<?php 
 
/* 
 
* Template Name: 
 
*/ 
 

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

 
$the_query = new WP_Query([ 
 
    'posts_per_page' => 14, 
 
    'paged' => get_query_var('paged', 1) 
 
]); 
 

 
if ($the_query->have_posts()) { ?> 
 
    <div id="ajax"> 
 
    <?php 
 
    $i = 0; 
 
    while ($the_query->have_posts()) { $the_query->the_post(); 
 

 
     if ($i % 7 === 0) { // Large post: on the first iteration and every 7th post after... ?> 
 
     <article <?php post_class('col-md-12'); ?>> 
 
      <?php the_post_thumbnail('large-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><?php 
 

 
     } else { // Small posts ?> 
 

 
      <article <?php post_class('col-md-4'); ?>> 
 
       <?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> 
 
      <?php 
 
     } 
 
     $i++; 
 
    }?> 
 
    </div> 
 
    <?php if(get_query_var('paged') < $the_query->max_num_pages) { 
 
     load_more_button(); 
 
    } 
 
} 
 
elseif (!get_query_var('paged') || get_query_var('paged') == '1') { 
 
    echo '<p>Sorry, no posts matched your criteria.</p>'; 
 
} 
 
wp_reset_postdata(); 
 
get_footer();

Screenshot enter image description here

+0

die in der Sprache Perspektive ist nicht das gleiche dies so tut dies nicht so, dass verwenden. – Codebeat

Antwort

0

In .done() müssen Sie überprüfen, ob Sie aufgrund eines Ajax-Aufrufs weitere Daten erhalten haben. Wenn nicht, dann nicht show oben. Zur Zeit haben Sie diese Prüfung nicht definiert daher das Verhalten.

.done(function (data) { 

    $that.removeClass('is-loading'); 

    // CHECK if data contains something? 
    if(YES) { 
     if ($(elm_button_vars.wrapper).length) { 
      $(elm_button_vars.wrapper).append($($.parseHTML(data)).find(elm_button_vars.wrapper).addBack(elm_button_vars.wrapper).html()); 
     } 
     else { 
      console.log('Please update Easy Load More settings with post list wrapper selector.'); 
     } 

     if (nextPage == maxPages) { 
      $that.remove(); 
     } 
     else { 
     $that.attr('data-page', nextPage); 
     } 
    } 
}) 
+0

Also sollte ich das in meine Frontend.js legen? – user6738171

+0

ja, aber überprüfen Sie den Zustand, wie ich es vorgeschlagen habe. – ScanQR

0

versuchen Sie diesen Code.

aktualisiert Antwort

   <?php 
     /* 
     * Template Name: 
     */ 

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

     $posts_per_page= 4; 

     $the_query = new WP_Query([ 
      'posts_per_page' => $posts_per_page, 
      'paged' => get_query_var('paged', 1) 
     ]); 

     if ($the_query->have_posts()) { ?> 
      <div id="ajax"> 
      <?php 
      $i = 0; 
      while ($the_query->have_posts()) { $the_query->the_post(); 

       $count = $the_query->post_count; 

       echo $count; 

       if($count<$posts_per_page){ 
        echo "<style>.elm-button{display:none;}</style>"; 
       } 

       if ($i % 7 === 0) { // Large post: on the first iteration and every 7th post after... ?> 
       <article <?php post_class('col-md-12'); ?>> 
        <?php the_post_thumbnail('large-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><?php 

       } else { // Small posts ?> 

        <article <?php post_class('col-md-4'); ?>> 
         <?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> 
        <?php 
       } 
       $i++; 
      }?> 
      </div> 
      <?php if(get_query_var('paged') < $the_query->max_num_pages) { 
       load_more_button(); 
      } 
     } 
     elseif (!get_query_var('paged') || get_query_var('paged') == '1') { 
      echo '<p>Sorry, no posts matched your criteria.</p>'; 
     } 
     wp_reset_postdata(); 
     get_footer(); 
+0

Leider hat es nicht funktioniert. Die Last wird immer noch angezeigt, obwohl keine weiteren Posts vorhanden sind. – user6738171

+0

können Sie Ihren Cache löschen und überprüfen? – vel

+0

Antwort aktualisiert .. – vel