Frage

Ich habe eine benutzerdefinierte Schleife, die ich verwende, um einige Immobilienlisten anzuzeigen, die innerhalb von 60 Tagen verfügbar sein werden. Ich rufe es mit der folgenden Funktion auf:

<?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(); ?>

Während die Schleife großartig funktioniert, kann ich es nicht zum Paginieren bringen. Es zeigt die ersten 10 (meine Standard-) Beiträge, zeigt aber die Pagination nicht an. Die einzige Möglichkeit, alle Beiträge anzuzeigen, besteht darin, sie auf einer Seite durch Hinzufügen anzuzeigen 'posts_per_page' => -1, Ich habe ähnliche Schleifen auf anderen Seiten, die kein Problem mit dem Pagieren haben. Der einzige Unterschied in diesem ist, dass es gibt zwei Metaschlüssel, die die Beiträge filtern.

Ich verwende WP Page Navi dafür und den Rest meiner Seiten. Ich schließe die Schleife und füge die Pagination mit dem folgenden Code hinzu:

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

Wie kann ich das beheben?

War es hilfreich?

Lösung

Ich habe dieses Problem mit Pagenavi schon einmal gestoßen. Meine Lösung ist es, die Variable $ WP_Query vorübergehend zu entführen und nach dem Schließen der Schleife dann neu zuweisen. Ein Exmaple:

<?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(); ?>

Der letzte Schritt besteht darin, die Variable $ wp_Query zu dem, was ursprünglich war, zuzuordnen und dann die Abfrage zurückzusetzen, um zu starten.

*Bearbeiten:*Fixed PHP -Tag. Guter Augenscharfschütze.

Andere Tipps

Ich hatte heute früher ein ähnliches Problem ...

Haben Sie einen benutzerdefinierten Beitragstyp und eine Seite oder einen Beitrag mit demselben Schnecken? Das heißt, die URL einer Seite, die Sie haben, und die benutzerdefinierte Post-Typ-URL-Umschreibung bei /Real-Estate?

Wenn dies der Fall ist, können Sie 2 mit derselben URL nicht haben oder WordPress wird verwirrt.

Sie können entweder die URL ändern oder dies versuchen http://wordpress.org/support/topic/pagination-with-custom-post-type-listing?replies=23#post-1637753. Ich habe mich entschieden, meine URL zu ändern, aber jemand dort schrieb eine benutzerdefinierte Frage, um das Problem zu umgehen

Ich benutze dies für eine benutzerdefinierte Pagination und seine Arbeit gut

//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>";
      }
    }
    ?>

// Definieren Sie dies für jede Vorlage wie Vorlage-Newsletter

    <?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>

Dies ist die Lösung, die für mich funktioniert hat und einen Teil des Originalcode von Nurain und die Antwort von Jan Fabry verwendet hat:

<?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; ?>

Sie können Ihren benutzerdefinierten Beitragstyp mit dieser Methode anzeigen. Ihre Pagination kann funktionieren !!!

<?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; ?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top