2017-10-14 17 views
16

Ön sayfamda, gönderilerim bir satırda 1 gönderi, 2 satır 2 satır, 1 gönderi satırı ve benzeri üzerinde. Daha sonra her 15 yazıdan sonra yük daha fazla düğme görünür (aşağıdaki örnek). Yükleme daha fazla düğme mükemmel çalışıyor, bu yüzden arama sayfamda çoğaltmaya çalışıyorum.Yük sayfamdaki daha fazla yükle benim açılış sayfamıza eklenmesi

Aynı sayfaya daha fazla düğme eklemek istiyorum. Ancak, bu sayfada farklı bir şekilde ayarlanmış yayınlarım var, her satırda sadece 2 mesajım var (alternatif bir col-12 yazısı yok). Farklı döngü yapısına ek olarak, her 8 yayından sonra yükü daha fazla eklemek istiyorum (aşağıdaki örnek). Ön sayfam için loop yapısını functions.php dosyasımda kopyaladım ve her 8 gönderiden sonra farklı döngü yapısına ve yüke daha fazla uyacak şekilde ayarladım. Ancak, düzgün çalışmayacak. İlk 8 mesaj, onları nasıl istediğimi, satır başına 2 satırlık 4 satır gösteriyor. Ancak, daha fazla düğmeye bastıktan sonra, mesajlar, ön sayfa döngüsünde olduğu gibi görünür (üst üste 1 mesajın 15 kaydı, bir satırda 2 mesajın 2 satırı, bir satırda 1 mesaj, vb.) .

Bunu nasıl düzeltebileceğimi bilen var mı? Ya da her satırda 2 mesajla 4 satırlık bir arama sayfası elde edersiniz? Şimdiden teşekkürler. Benim baş sayfa nasıl göründüğünü

benim arama sayfası bakmak istiyorum nasıl

enter image description here

enter image description here

benim ön-page.php

<?php 
 

 
get_header(); 
 
get_template_part ('post-template/trendingg'); 
 
?> 
 

 

 

 
<script> 
 
    var now=2; // when click start in page 2 
 

 
    jQuery(document).on('click', '#load_more_btn', function() { 
 

 
     jQuery.ajax({ 
 
      type: "POST", 
 
      url: "<?php echo get_site_url(); ?>/wp-admin/admin-ajax.php", 
 
      data: { 
 
       action: 'my_load_more_function', // the name of the function in functions.php 
 
       paged: now, // set the page to get the ajax request 
 
       posts_per_page: 15 //number of post to get (use 1 for testing) 
 
      }, 
 
      success: function (data) { 
 

 
      if(data!=0){ 
 
       jQuery("#ajax").append(data); // put the content into ajax container 
 
       now=now+1; // add 1 to next page 
 
      }else{ 
 
       jQuery("#load_more_btn").hide(); 
 
      } 
 
      }, 
 
      error: function (errorThrown) { 
 
       alert(errorThrown); // only for debuggin 
 
      } 
 
     }); 
 
    }); 
 
</script> 
 

 
<section id="ajax"><!-- i have to change div to section, maybe a extra div declare --> 
 
<?php 
 

 
$the_query = new WP_Query([ 
 
    'posts_per_page' => 15, // i use 1 for testing 
 
     'orderby' => 'post_date', 
 
'order' => 'DESC', 
 
    'paged' => get_query_var('paged', 1) //page number 1 on load 
 
]); 
 

 
if ($the_query->have_posts()) { 
 

 
     $i = 0; 
 
     $j = 0; 
 
     while ($the_query->have_posts()) { 
 
      $the_query->the_post(); 
 

 
      if ($i % 5 === 0) { // Large post: on the first iteration and every 7th post after... ?> 
 
       <div class="row"> 
 
        <article <?php post_class('col-sm-12 col-md-12'); ?>> 
 
         <div class="large-front-container"> 
 
          <a title="<?php the_title_attribute(); ?>" href="<?php the_permalink(); ?>"><?php the_post_thumbnail('full', array('class' => 'large-front-thumbnail')); ?></a> 
 
         </div> 
 
         <div class="front-page-date"><?php echo str_replace('mins', 'minutes', human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'); ?></div> 
 
         <div class="front-page-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 
 
         <p class="front-page-post-excerpt"><?php echo get_the_excerpt(); ?></p> 
 
         <div class="front-page-post-info"> 
 
          <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
 
          <?php get_template_part('includes/front-shop-the-post'); ?> 
 
          <?php get_template_part('includes/share-buttons'); ?> 
 
          <div class="front-comments"><?php comments_popup_link ('0', '1', '%', 'comment-count', 'none'); ?></div> 
 
         </div> 
 
        </article> 
 
       </div> 
 
      <?php } else { // Small posts ?> 
 
       <?php if($j % 2 === 0){ echo '<div class="row">';} ?> 
 
       <article <?php post_class('col-sm-6 col-md-6'); ?>> 
 
        <div class="two-front-container"> 
 
         <a title="<?php the_title_attribute(); ?>" href="<?php the_permalink(); ?>"><?php the_post_thumbnail('full', array('class' => 'medium-front-thumbnail')); ?></a> 
 
         <div> 
 
        <div class="front-page-date"><?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?></div> 
 
        <div class="front-page-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 
 
        <p class="front-page-post-excerpt"><?php echo get_the_excerpt(); ?></p> 
 
        <div class="front-page-post-info"> 
 
         <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
 
         <?php get_template_part('includes/front-shop-the-post'); ?> 
 
         <?php get_template_part('includes/share-buttons'); ?> 
 
         <div class="front-comments"><?php comments_popup_link ('0', '1', '%', 'comment-count', 'none'); ?></div> 
 
        </div> 
 
       </article> 
 
       <?php $j++; if($j % 2 === 0){ echo '</div>';}?> 
 
       <?php 
 
      } 
 
      $i++; 
 
     }?> 
 
    <?php 
 
}?> 
 
</section> 
 

 
<button id="load_more_btn">Load More Posts</button> <!-- button out of ajax container for load content and button displayed at the bottom --> 
 
<?php 
 
get_footer();

benim functions.php ön sayfa döngü

//FRONT PAGE 
 
add_action('wp_ajax_my_load_more_function', 'my_load_more_function'); 
 
add_action('wp_ajax_nopriv_my_load_more_function', 'my_load_more_function'); 
 

 
function my_load_more_function() { 
 

 
    $query = new WP_Query([ 
 
     'posts_per_page' => $_POST["posts_per_page"], 
 
     'orderby' => 'post_date', 
 
'order' => 'DESC', 
 
     'paged' => get_query_var('paged', $_POST["paged"]) 
 
    ]); 
 

 

 
    if ($query->have_posts()) { 
 

 
     $i = 0; 
 
     $j = 0; 
 

 
     while ($query->have_posts()) { 
 
       $query->the_post(); 
 

 
      if ($i % 5 === 0) { // Large post: on the first iteration and every 7th post after... ?> 
 
<div class="row"> 
 
        <article <?php post_class('col-sm-12 col-md-12'); ?>> 
 
         <div class="large-front-container"> 
 
          <a title="<?php the_title_attribute(); ?>" href="<?php the_permalink(); ?>"><?php the_post_thumbnail('full', array('class' => 'large-front-thumbnail')); ?></a> 
 
         </div> 
 
         <div class="front-page-date"><?php echo str_replace('mins', 'minutes', human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'); ?></div> 
 
         <div class="front-page-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 
 
         <p class="front-page-post-excerpt"><?php echo get_the_excerpt(); ?></p> 
 
         <div class="front-page-post-info"> 
 
          <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
 
          <?php get_template_part('includes/front-shop-the-post'); ?> 
 
          <?php get_template_part('includes/share-buttons'); ?> 
 
          <div class="front-comments"><?php comments_popup_link ('0', '1', '%', 'comment-count', 'none'); ?></div> 
 
         </div> 
 
        </article> 
 
       </div> 
 
      <?php } else { // Small posts ?> 
 
       <?php if($j % 2 === 0) echo '<div class="row">'; ?> 
 
           <article <?php post_class('col-sm-6 col-md-6'); ?>> 
 
        <div class="two-front-container"> 
 
         <a title="<?php the_title_attribute(); ?>" href="<?php the_permalink(); ?>"><?php the_post_thumbnail('full', array('class' => 'medium-front-thumbnail')); ?></a> 
 
         <div> 
 
        <div class="front-page-date"><?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?></div> 
 
        <div class="front-page-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 
 
        <p class="front-page-post-excerpt"><?php echo get_the_excerpt(); ?></p> 
 
        <div class="front-page-post-info"> 
 
         <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
 
         <?php get_template_part('includes/front-shop-the-post'); ?> 
 
         <?php get_template_part('includes/share-buttons'); ?> 
 
         <div class="front-comments"><?php comments_popup_link ('0', '1', '%', 'comment-count', 'none'); ?></div> 
 
        </div> 
 
       </article> 
 
       <?php $j++; if($j % 2 === 0) echo '</div>'; ?> 
 
       <?php 
 
      } 
 
      $i++; 
 

 
     } 
 
     wp_reset_query(); 
 
    }else{ 
 
     return 0; 
 
    } 
 

 
    exit; 
 
}

benim search.php

<?php 
 

 
get_header(); 
 
?> 
 
    <div class="search-results-search"> 
 
<form role="search" method="get" class="search-form-search form-inline-search" action=""> 
 
      <div class="input-group-search"> 
 
       <input type="search" value="" name="s" class="input-sm-search search-field-search form-control-search" placeholder="<?php echo $s ?>"> 
 
      </div> 
 
     </form> 
 
    </div> 
 

 

 

 
<script> 
 
    var now=2; // when click start in page 2 
 

 
    jQuery(document).on('click', '#load_more_btn', function() { 
 

 
     jQuery.ajax({ 
 
      type: "POST", 
 
      url: "<?php echo get_site_url(); ?>/wp-admin/admin-ajax.php", 
 
      data: { 
 
       action: 'my_search_load_more_function', // the name of the function in functions.php 
 
       paged: now, // set the page to get the ajax request 
 
       posts_per_page: 15 //number of post to get (use 1 for testing) 
 
      }, 
 
      success: function (data) { 
 

 
      if(data!=0){ 
 
       jQuery("#ajax").append(data); // put the content into ajax container 
 
       now=now+1; // add 1 to next page 
 
      }else{ 
 
       jQuery("#load_more_btn").hide(); 
 
      } 
 
      }, 
 
      error: function (errorThrown) { 
 
       alert(errorThrown); // only for debuggin 
 
      } 
 
     }); 
 
    }); 
 
</script> 
 

 
<section id="ajax"><!-- i have to change div to section, maybe a extra div declare --> 
 
<?php 
 

 
$the_query = new WP_Query([ 
 
    'posts_per_page' => 8, // i use 1 for testing 
 
     'orderby' => 'post_date', 
 
'order' => 'DESC', 
 
    'paged' => get_query_var('paged', 1) //page number 1 on load 
 
]); 
 

 
if ($the_query->have_posts()) { 
 

 
     $i = 0; 
 
     $j = 0; 
 
     while ($the_query->have_posts()) { 
 
      $the_query->the_post(); 
 

 
    if($j % 2 === 0){ echo '<div class="row">';} ?> 
 
       <article <?php post_class('col-sm-6 col-md-6'); ?>> 
 
        <div class="two-front-container"> 
 
        <?php the_post_thumbnail('full', array('class' => 'medium-front-thumbnail')); ?> 
 
         <div> 
 
        <div class="front-page-date"><?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?></div> 
 
        <div class="front-page-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 
 
        <p class="front-page-post-excerpt"><?php echo get_the_excerpt(); ?></p> 
 
        <div class="front-page-post-info"> 
 
         <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
 
         <?php get_template_part('includes/front-shop-the-post'); ?> 
 
         <?php get_template_part('includes/share-buttons'); ?> 
 
         <div class="front-comments"><?php comments_popup_link ('0', '1', '%', 'comment-count', 'none'); ?></div> 
 
        </div> 
 
       </article> 
 
       <?php $j++; if($j % 2 === 0){ echo '</div>';}?> 
 
       <?php 
 
      } 
 
     }?> 
 

 
</section> 
 

 
<button id="load_more_btn">Load More Posts</button> <!-- button out of ajax container for load content and button displayed at the bottom --> 
 
<?php 
 
get_footer();

0 benim functions.php araştırma döngüsü

Benim ilk baştaki 8 arama sonuçlarında

//SEARCH PAGE 
 
add_action('wp_ajax_my_search_load_more_function', 'my_search_load_more_function'); 
 
add_action('wp_ajax_nopriv_my_search_load_more_function', 'my_search_load_more_function'); 
 

 
function my_search_load_more_function() { 
 

 
    $query = new WP_Query([ 
 
     'posts_per_page' => $_POST["posts_per_page"], 
 
     'orderby' => 'post_date', 
 
'order' => 'DESC', 
 
     'paged' => get_query_var('paged', $_POST["paged"]) 
 
    ]); 
 

 

 
if ($the_query->have_posts()) { 
 

 
     $i = 0; 
 
     $j = 0; 
 
     while ($the_query->have_posts()) { 
 
      $the_query->the_post(); 
 

 
    if($j % 2 === 0){ echo '<div class="row">';} ?> 
 
       <article <?php post_class('col-sm-6 col-md-6'); ?>> 
 
        <div class="two-front-container"> 
 
        <?php the_post_thumbnail('full', array('class' => 'medium-front-thumbnail')); ?> 
 
         <div> 
 
        <div class="front-page-date"><?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?></div> 
 
        <div class="front-page-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 
 
        <p class="front-page-post-excerpt"><?php echo get_the_excerpt(); ?></p> 
 
        <div class="front-page-post-info"> 
 
         <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
 
         <?php get_template_part('includes/front-shop-the-post'); ?> 
 
         <?php get_template_part('includes/share-buttons'); ?> 
 
         <div class="front-comments"><?php comments_popup_link ('0', '1', '%', 'comment-count', 'none'); ?></div> 
 
        </div> 
 
       </article> 
 
       <?php $j++; if($j % 2 === 0) echo '</div>'; ?> 
 
       <?php 
 
    
 

 
     } 
 
     wp_reset_query(); 
 
    }else{ 
 
     return 0; 
 
    } 
 

 
    exit; 
 
}
doğru arama sonuçlarıdır. Ancak, yüke daha fazla basıldığında, tüm yayınlarım en sondan başlayarak yükler.

** Güncelleme search.php

<?php 
 

 
get_header(); 
 
?> 
 
    <div class="search-results-search"> 
 
<form role="search" method="get" class="search-form-search form-inline-search" action=""> 
 
      <div class="input-group-search"> 
 
       <input type="search" value="" name="s" class="input-sm-search search-field-search form-control-search" placeholder="<?php echo $s ?>"> 
 
      </div> 
 
     </form> 
 
    </div> 
 

 

 

 
<script> 
 
    var now=2; // when click start in page 2 
 

 
    jQuery(document).on('click', '#load_more_btn', function() { 
 

 
     jQuery.ajax({ 
 
      type: "POST", 
 
      url: "<?php echo get_site_url(); ?>/wp-admin/admin-ajax.php", 
 
      data: { 
 
    action: 'my_load_more_function_s', // the name of the function in functions.php 
 
    paged: now, // set the page to get the ajax request 
 
    posts_per_page: 8, //number of post to get (use 1 for testing) 
 
}, 
 
      success: function (data) { 
 

 
      if(data!=0){ 
 
       jQuery("#ajax").append(data); // put the content into ajax container 
 
       now=now+1; // add 1 to next page 
 
      }else{ 
 
       jQuery("#load_more_btn").hide(); 
 
      } 
 
      }, 
 
      error: function (errorThrown) { 
 
       alert(errorThrown); // only for debuggin 
 
      } 
 
     }); 
 
    }); 
 
</script> 
 

 
<section id="ajax"><!-- i have to change div to section, maybe a extra div declare --> 
 
<?php 
 

 
$the_query = new WP_Query([ 
 
    'posts_per_page' => 8, // i use 1 for testing 
 
     'orderby' => 'post_date', 
 
'order' => 'DESC', 
 
     's' => $s, 
 
    'paged' => get_query_var('paged', 1) //page number 1 on load 
 
]); 
 

 
if ($the_query->have_posts()) { 
 

 
     $i = 0; 
 
     $j = 0; 
 
     while ($the_query->have_posts()) { 
 
      $the_query->the_post(); 
 

 
    if($j % 2 === 0){ echo '<div class="row">';} ?> 
 
       <article <?php post_class('col-sm-6 col-md-6'); ?>> 
 
        <div class="two-front-container"> 
 
        <?php the_post_thumbnail('full', array('class' => 'medium-front-thumbnail')); ?> 
 
         <div> 
 
        <div class="front-page-date"><?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?></div> 
 
        <div class="front-page-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 
 
        <p class="front-page-post-excerpt"><?php echo get_the_excerpt(); ?></p> 
 
        <div class="front-page-post-info"> 
 
         <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
 
         <?php get_template_part('includes/front-shop-the-post'); ?> 
 
         <?php get_template_part('includes/share-buttons'); ?> 
 
         <div class="front-comments"><?php comments_popup_link ('0', '1', '%', 'comment-count', 'none'); ?></div> 
 
        </div> 
 
       </article> 
 
       <?php $j++; if($j % 2 === 0){ echo '</div>';}?> 
 
       <?php 
 
      } 
 
     }?> 
 

 
</section> 
 

 
<button id="load_more_btn">Load More Posts</button> <!-- button out of ajax container for load content and button displayed at the bottom --> 
 
<?php 
 
get_footer();

** Güncelleme fonksiyonlar.php arama döngü

//SEARCH PAGE 
 
add_action('wp_ajax_my_load_more_function_s', 'my_load_more_function_s'); 
 
add_action('wp_ajax_nopriv_my_load_more_function_s', 'my_load_more_function_s'); 
 

 
function my_load_more_function_s() { 
 
    global $query_string; 
 

 
    $search_query = wp_parse_str($query_string); 
 
    $search = array_merge($search_query, [ 
 
     'posts_per_page' => $_POST["posts_per_page"], 
 
     'orderby' => 'post_date', 'order' => 'DESC', 
 
     'paged' => get_query_var('paged', $_POST["paged"]), 
 
     's' => $_POST['s'] 
 
    ]); 
 

 
    $query = new WP_Query($search); 
 

 

 
if ($query->have_posts()) { 
 

 
     $i = 0; 
 
     $j = 0; 
 
     while ($query->have_posts()) { 
 
      $query->the_post(); 
 

 
    if($j % 2 === 0){ echo '<div class="row">';} ?> 
 
       <article <?php post_class('col-sm-6 col-md-6'); ?>> 
 
        <div class="two-front-container"> 
 
        <?php the_post_thumbnail('full', array('class' => 'medium-front-thumbnail')); ?> 
 
         <div> 
 
        <div class="front-page-date"><?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?></div> 
 
        <div class="front-page-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 
 
        <p class="front-page-post-excerpt"><?php echo get_the_excerpt(); ?></p> 
 
        <div class="front-page-post-info"> 
 
         <a class="moretext" href="<?php the_permalink(); ?>">Read more</a> 
 
         <?php get_template_part('includes/front-shop-the-post'); ?> 
 
         <?php get_template_part('includes/share-buttons'); ?> 
 
         <div class="front-comments"><?php comments_popup_link ('0', '1', '%', 'comment-count', 'none'); ?></div> 
 
        </div> 
 
       </article> 
 
       <?php $j++; if($j % 2 === 0){ echo '</div>';}?> 
 
       <?php 
 
      } 
 
     }else{ 
 
     return 0; 
 
    } 
 

 
    exit; 
 
}

+0

i @sysix doğru cevabı sağlamıştır inanıyorum: unutma, javascript benzerleri için php ve çıktıda numarayı kaydedebilirsiniz For You docs too


bu bulabilirsiniz. Çözüm değilse lütfen güncelleştirin. – Adibas03

cevap

2

Sen gerekir öncelikle ajax çağrısı de ve de arama değer vermek. json_encode ile

sizin s değişkeni kodlamak

var now=2; // when click start in page 2 
var searchValue = <?php echo json_encode(['s' => $s]); ?>; 

jQuery(document).on('click', '#load_more_btn', function() { 

    jQuery.ajax({ 
     type: "POST", 
     url: "<?php echo get_site_url(); ?>/wp-admin/admin-ajax.php", 
     data: { 
      action: 'my_load_more_function_s', // the name of the function in functions.php, 
      s: searchValue.s, // the value from the input 
      paged: now, // set the page to get the ajax request 
      posts_per_page: 8, //number of post to get (use 1 for testing) 
     }, 

Ve sonra bu gibi ajax fonksiyonunu değiştirmek: search.php

den

ile başlangıç ​​kodunu değiştirmek

function my_load_more_function_s() { 
    global $query_string; 

    $search_query = wp_parse_str($query_string); 
    $search = array_merge($search_query, [ 
     'posts_per_page' => $_POST["posts_per_page"], 
     'orderby' => 'post_date', 'order' => 'DESC', 
     'paged' => get_query_var('paged', $_POST["paged"]), 
     's' => $_POST['s'] 
    ]); 

    $query = new WP_Query($search); 

s -paramet er docs'da bulunabilir.

Arama sayfası hakkında daha fazla bilgi okuduktan sonra. global $query_string'u kullanmanız gerektiğini öğrendim.

data: { 
    action: 'my_load_more_function', // the name of the function in functions.php 
    paged: now, // set the page to get the ajax request 
    posts_per_page: <?php echo $number; ?> //number of post to get (use 1 for testing) 
} 
+0

Bu yüzden önerilen kodu değiştirdiğimde her yükte sadece 8 mesaj gösteriliyor. Ancak, post döngüsünü my_load_more_function adresinden çağırıyor. Bu yüzden arama işlevime (asıl sorum olan) my_search_load_more_function olarak değiştirmeyi denedim, ancak şimdi düğmeye bastığımda daha fazla tuşa bastığınızda bir pop up kutusu localhost diyor: 888 diyor ki: [object Object] – user6738171

+0

farklı bir döngü çünkü orijinal soruma değindiğim gibi, ön sayfamdaki yazı düzeni, arama sayfamda ulaşmaya çalıştığım yazı düzeninden farklı. Ön sayfamda her 7nci yazmda col-md-12 var, ancak arama sayfamda her 7nci mesajdan kurtulmak istiyorum ve hepsine col-md-6 olsun – user6738171

+0

ağ analiz aracınıza bakabilirsiniz. tarayıcıda inbuild), ajax aramanızın yanıtıdır. Bunun bir miktar php hatası/uyarı ürettiğini düşünüyorum. – Sysix

İlgili konular