Sayfalandırma özel döngü ile çalışmıyor


41

60 gün içinde kullanılabilecek bazı Emlak listelerini görüntülemek için kullandığım özel bir döngüm var. Aşağıdaki işlev ile onu arıyorum:

<?php 
$sixtydays = date('Y/m/d', strtotime('+60 days'));
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$query = new PostsOrderedByMetaQuery(array(
  'post_type' => array('post', 'real-estate'),
  'meta_key' => 'Time Available',
  'meta_compare' => '<=',
  'meta_value' => $sixtydays,
  'paged' => $paged,
  'orderby_meta_key' => 'Price',
  'orderby_order'    => 'ASC'
));
?>
<?php while ($query->have_posts()) : $query->the_post(); ?>

Döngü harika olsa da sayfa numaralandırmasını sağlayamıyorum. İlk 10 (varsayılan) gönderimi gösterir, ancak sayfalandırmayı göstermez. Tüm yayınları görüntülemenin tek yolu 'posts_per_page' => -1,, diğer sayfalarda sayfalandırmada sorun yaşamadan benzer döngülerim olduğunu ekleyerek bir sayfada göstermektir . Buradaki tek fark , gönderileri filtreleyen iki meta anahtarı olmasıdır.

WP Page Navi'yi bunun ve sayfalarımın geri kalanı için kullanıyorum. Döngüyü kapatıyorum ve aşağıdaki kodu kullanarak sayfalamayı ekliyorum:

<?php endwhile; // End the loop. Whew. ?>
<?php wp_pagenavi(); ?>
<?php wp_reset_query(); ?>

Bunu nasıl düzeltebilirim?


Cevaplamadan sonra sorunuzu okudum ... Yani pagenavi eklentinizin görünmediğini mi, yoksa sayfalamanın sizi bir 404'e getirdiğini mi söylüyordunuz?
eileen kodları

WP Page Navi, benzer sorgulara sahip yayınlarda görüntülenmiyor (birden fazla meta anahtar tarafından filtreleniyor). Arşiv, blog, vb. Diğer tüm sayfalarda görünmektedir
nurain

Yanıtlar:


38

Daha önce PageNavi ile bu sorunu yaşadım. Benim çözümüm $ wp_query değişkenini geçici olarak ele geçirmek ve döngüyü kapattıktan sonra yeniden atamak. Bir örnek:

<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args=array(
   'post_type'=>'post',
   'cat' => 6,
   'posts_per_page' => 5,
   'paged'=>$paged
);
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query($args);

/* PageNavi at Top */
if (function_exists('wp_pagenavi')){wp_pagenavi();}
if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();   

/* DO STUFF IN THE LOOP */

endwhile; endif;
/* PageNavi at Bottom */
if (function_exists('wp_pagenavi')){wp_pagenavi();}
$wp_query = null;
$wp_query = $temp;
wp_reset_query(); ?>

Son adım $ wp_query değişkenini orijinal olana yeniden atamak ve sorguyu yeniden başlatmak için sıfırlamaktır.

* Düzenleme: * Sabit php etiketi. İyi göz keskin nişancı.


PageNavi'nin bu eklentiyi ne zaman yaptığını bilmiyorum, ancak Wordpress 3.0'dan beri özel döngülere gösterilecek sayfalamayı almak için $ wp_query değişkenini ele geçirmek zorunda kaldım. Yardımcı olduğuma sevindim! : D
PNMG

8
wp_pagenavi() Artık queryargümanı da kabul ediyor , böylece üzerine $wp_queryyazmak yerine yazabilirsin wp_pagename( array( 'query' => $my_query ) ).
Jan Fabry

Bu çözüm benim için çalıştı. Bundan önce başka bir döngü daha vardı, bu yüzden örnekteki koddan önce bir wp_reset_query () eklemek zorunda kaldım.
Ryan

Kullanarak özel sorgular içeren Sayısal Sayfalandırma için olası başka bir çözüm için bu cevaba bakın WP_Query();.
Michael Ecklund

10

Bugün daha önce benzer bir sorun yaşadım ...

Özel bir yazı türünüz ve aynı ilanda bir sayfa veya yayınınız var mı? Anlamı / real-estate olan bir sayfanın url'si ve / real-estate'deki özel post tip url'nin yeniden yazılması nedir?

Bu durumda, aynı URL’ye 2 sahip olamazsınız veya başka bir wordpress kafası karışır.

Ya url değiştirmek veya bu deneyebilirsiniz http://wordpress.org/support/topic/pagination-with-custom-post-type-listing?replies=23#post-1637753 . URL'mi değiştirmeyi seçtim, ancak oradaki biri sorunu aşmak için özel bir sorgu yazdı


Aynı isimli bir şeyim olduğunu sanmıyorum. Aslında "Hızlı Hareket İçinde - 60 Gün" adında yeni bir sayfa oluşturdum ve bunun için bir sayfa şablonu oluşturarak döngüyü ekledim.
Nurain

6

Bunu Özel Sayfalandırma İçin Kullanıyorum ve İşleri İyi

//paginations for newsletter

     //define in function file
      function custom_pagination($numpages = '', $pagerange = '', $paged='')  {

      if (empty($pagerange)) {
        $pagerange = 2;
      }

      /**
       * This first part of our function is a fallback
       * for custom pagination inside a regular loop that
       * uses the global $paged and global $wp_query variables.
       * 
       * It's good because we can now override default pagination
       * in our theme, and use this function in default queries
       * and custom queries.
       */

      if ($paged == '') {
          global $paged;
          if (empty($paged)) {
            $paged = 1;
          }
      }
      if ($numpages == '') {
        global $wp_query;
        $numpages = $wp_query->max_num_pages;
        if(!$numpages) {
            $numpages = 1;
        }
      }

      /** 
       * We construct the pagination arguments to enter into our paginate_links
       * function. 
       */

      $pagination_args = array(
        'base'            => get_pagenum_link(1) . '%_%',
        'format'          => 'page/%#%',
        'total'           => $numpages,
        'current'         => $paged,
        'show_all'        => false,
        'end_size'        => 1,
        'mid_size'        => $pagerange,
        'prev_next'       => true,
        'prev_text'       => __('&#9668;'),
        'next_text'       => __('&#9658;'),
        'type'            => 'plain',
        'add_args'        => true,
        'add_fragment'    => '',
        'after_page_number' => '',
        'before_page_number' =>'',
        );
     $paginate_links = paginate_links($pagination_args);

      if ( $paginate_links ) {
        echo "<nav class='custom-pagination'>";
          //echo "<span class='page-numbers page-num'>Page " . $paged . " of " . $numpages . "</span> ";
          echo $paginate_links;
        echo "</nav>";
      }
    }
    ?>

// Şablon bülteni gibi herhangi bir Şablon için bunu tanımla

    <?php  $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
                               $newslatter_detail = array(
                               'post_type' => 'newsletter',
                               'post_status' => 'publish',
                               'posts_per_page' =>4,
                               'order' => 'ASC',
                               //'orderby' =>'date',
                               'paged' => $paged
                               );
                               $posts = new WP_Query( $newslatter_detail );
                               $posts_array = get_posts( $newslatter_detail );
                              if ( $posts -> have_posts() ) {
                               while ( $posts->have_posts() ) : $posts->the_post();
                               the_title();
                               endwhile;
                        wp_reset_postdata();
              } else { ?>
                 No Forum List found.
                <?php } ?>

              <div class="pagination">
                    <?php
                       if (function_exists(custom_pagination)) {
                        custom_pagination($posts->max_num_pages,"",$paged);
                       }
                       ?>
                 </div>

Merhaba custom_pagination () işlevi, tema işlevlerinde dosya veya eklenti işlevlerinde tanımlayın. ve bu kodu şablon dosyanıza koyduktan sonra Yukarıdaki koddaki yorum bölümünden sonra bunu tanımlayın = Herhangi bir sorgu varsa burada bana bildirin.
Adnan Limdiwala

Bu Ans ile ilgili herhangi bir sorun umarım sizin için iyi bir iş
çıkarır

2

Bu, benim için işe yarayan, nurain'in orijinal kodunun bir kısmını ve Jan Fabry'nin cevabını kullanan çözümdür:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$myquery = new WP_Query(
    array(
        'posts_per_page' => '2',
        'paged'=>$paged
        // add any other parameters to your wp_query array
    )   
);  
?>

<?php
if ($myquery->have_posts()) :  while ($myquery->have_posts()) : $myquery->the_post();
?>

<!-- Start your post. Below an example: -->

<div class="article-box">                               
<h2 class="article-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="article-excerpt"><?php echo(get_the_excerpt()); ?></p>                        
</div>

<!-- End of your post -->

<?php endwhile; ?>
<?php wp_pagenavi( array( 'query' => $myquery ) ); ?><!-- IMPORTANT: make sure to include an array with your previously declared query values in here -->
<?php wp_reset_query(); ?>
<?php else : ?>
<p>No posts found</p>
<?php endif; ?>

1

Bu yöntemi kullanarak size özel gönderi türünü gösterebilir ve sayfalandırmanız işe yarayabilir !!!

<?php
  query_posts( array( 'post_type' => 'post', 'posts_per_page' => '2', 'paged' =>     get_query_var( 'paged' ) ) ); 

  if (have_posts() ) :  while (have_posts() ) : the_post(); 
?>
<!-- Start your post. Below an example: -->
<div class="article-box">                               
<h2 class="article-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="article-excerpt"><?php echo(get_the_excerpt()); ?></p>                        
</div>
<!-- End of your post -->
<?php endwhile; ?>
<?php wp_pagenavi(); ?><!-- IMPORTANT: make sure to include an array with your previously declared query values in here -->
<?php wp_reset_query(); ?>
<?php else : ?>
<p>No posts found</p>
<?php endif; ?>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.