कस्टम लूप के साथ काम नहीं कर रहा है


41

मुझे एक कस्टम लूप मिला है जिसका उपयोग मैं कुछ रियल एस्टेट लिस्टिंग को प्रदर्शित करने के लिए कर रहा हूं जो 60 दिनों के भीतर उपलब्ध होगी। मैं इसे निम्नलिखित फ़ंक्शन के साथ बुला रहा हूं:

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

जबकि लूप बहुत अच्छा काम करता है, मैं इसे पगनेट नहीं कर सकता। यह पहले 10 (मेरे डिफ़ॉल्ट) पदों को दिखाता है लेकिन पृष्ठांकन नहीं दिखाता है। सभी पोस्ट प्रदर्शित करने का एकमात्र तरीका यह है कि उन्हें एक पृष्ठ पर दिखाने के लिए 'posts_per_page' => -1,मुझे अन्य पृष्ठों पर समान लूप्स हैं जिन्हें कोई समस्या नहीं है। इस एक के साथ अंतर केवल इतना है कि दो मेटा कुंजियाँ हैं जो पदों को फ़िल्टर कर रही हैं।

मैं इसके लिए और मेरे बाकी पेजों के लिए WP पेज नवी का उपयोग कर रहा हूं। मैं लूप बंद कर रहा हूं और निम्नलिखित कोड का उपयोग करके पेजिंग को जोड़ रहा हूं:

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

मैं इसे कैसे ठीक कर सकता हूं?


उत्तर देने के बाद मैंने आपके प्रश्न को फिर से पढ़ा ... क्या आपका मतलब है कि आपका पजावनवी प्लगइन दिखाई नहीं दे रहा था या यह कि पाजिनेशन आपको 404 में ला रहा था?
20

WP पेज नवी समान प्रश्नों (एक से अधिक मेटा कुंजी द्वारा फ़िल्टर) के साथ पदों पर प्रदर्शित नहीं हो रही है। यह अभिलेखागार, ब्लॉग, आदि जैसे अन्य सभी पृष्ठों पर दिखाई दे रहा है
नर्स

जवाबों:


38

मैंने पहले पेजनावी के साथ इस समस्या में भाग लिया है। मेरा समाधान अस्थायी रूप से $ wp_query वैरिएबल को हाईजैक करना है और फिर लूप को बंद करने के बाद इसे फिर से असाइन करना है। एक निर्वासन:

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

अंतिम चरण मूल रूप से मूल रूप से $ wp_query चर को फिर से असाइन करने के लिए है और फिर क्वेरी को फिर से शुरू करने के लिए रीसेट करें।

* संपादित करें: * फिक्स्ड php टैग। अच्छा आँख सूँघने वाला।


मुझे नहीं पता कि पेजनवी ने कब अपने प्लगइन में यह बदलाव किया है, लेकिन जब से वर्डप्रेस 3.0 मैंने कस्टम लूप पर दिखाने के लिए पेजिनेशन पाने के लिए $ wp_query वेरिएबल को हाईजैक करना पड़ा है। मैं खुशी से मदद कर सकता है! : डी
पीएनएमजी

8
wp_pagenavi() अब queryतर्क को भी स्वीकार करता है , इसलिए ओवरराइट करने के बजाय $wp_queryआप लिख सकते हैं wp_pagename( array( 'query' => $my_query ) )
जान फेब्री

इस समाधान ने मेरे लिए काम किया। मेरे पास इससे पहले एक और लूप था, इसलिए मुझे उदाहरण में कोड से पहले एक wp_reset_query () जोड़ना था।
रयान

उपयोग कर रहे कस्टम प्रश्नों के साथ न्यूमेरिकल पेजिनेशन के एक और संभावित समाधान के लिए इस उत्तर को देखें WP_Query();
माइकल एकलांड

10

मैंने आज पहले भी इसी तरह का एक मुद्दा ...

क्या आपके पास एक कस्टम पोस्ट प्रकार और एक पेज या एक ही स्लग के साथ पोस्ट है? मतलब उस पृष्ठ का url है जो आपके पास है / अचल संपत्ति और कस्टम पोस्ट प्रकार url / वास्तविक संपत्ति में फिर से लिखना है?

अगर ऐसा है तो आपके पास एक ही यूआरएल के साथ 2 नहीं हो सकता है या फिर वर्डप्रेस भ्रमित हो जाता है।

आप या तो url बदल सकते हैं या इस http://wordpress.org/support/topic/pagination-with-custom-post-type-listing?replies=23#post-1637753 पर प्रयास कर सकते हैं । मैंने अपना url बदलना चुना, लेकिन वहाँ के किसी व्यक्ति ने समस्या के बारे में जानने के लिए एक कस्टम क्वेरी लिखी


मुझे नहीं लगता कि मेरे पास कुछ भी है। मैंने वास्तव में "क्विक मूव इन - 60 डेज" नामक एक नया पेज बनाया और इसके लिए एक पेज टेम्प्लेट बनाकर लूप को जोड़ा।
21

6

मैं इसके लिए कस्टम पेजिनेशन और इसके काम को ठीक कर रहा हूं

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

// इसे टेम्पलेट-न्यूज़लेटर जैसे किसी भी टेम्पलेट के लिए परिभाषित करें

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

हाय custom_pagination () फ़ंक्शन थीम फ़ंक्शन फ़ाइल या प्लगइन फ़ंक्शन फ़ाइल में परिभाषित होता है। और जब आप इस कोड को अपनी टेम्प्लेट फ़ाइल में डालते हैं, तो उपरोक्त कोड में टिप्पणी भाग के बाद इसे परिभाषित करें = किसी भी टेम्पलेट के लिए टेम्पलेट-न्यूज़लेटर जैसे किसी भी टेम्पलेट के लिए इसे परिभाषित करें यदि कोई प्रश्न है तो मुझे यहाँ बताएं।
अदनान लिमदीवाला

इस Ans के बारे में कोई भी मुद्दा मुझे उम्मीद है कि इसका काम आपके लिए ठीक है
अदनान लिमदीवाला

2

यह वह समाधान है जो मेरे लिए काम करता था, नर्स द्वारा मूल कोड का हिस्सा और जन फेब्री द्वारा उत्तर का उपयोग करना:

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

आप इस पद का उपयोग करके अपने कस्टम पद प्रकार को प्रदर्शित कर सकते हैं जो आपका पृष्ठांकन काम कर सकता है !!!

<?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; ?>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.