"/ पृष्ठ / 2 /" काम क्यों नहीं कर रहा है?


11

अंत में नीचे दिए गए कोड के साथ काम करने के लिए पेजिनेशन मिला, लेकिन अब पेजिंग लिंक / वीडियो / पेज / 2 /, जो मौजूद नहीं है। मुझे काम करने के लिए पेज 2 कैसे मिलेगा?

<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('post_type=videos&showposts=1'.'&paged='.$paged);

while ($wp_query->have_posts()) : $wp_query->the_post();
  //display stuff
endwhile;           

php  wp_pagenavi();
 ?>

मैं उस तरह की मुख्य क्वेरी को ओवरराइड करने की अनुशंसा नहीं करूंगा, जिसे आपने उपयोग करने पर विचार किया है pre_get_posts? फिर आप अपने लिखने के बजाय पेजेशन कोड में निर्मित का उपयोग कर सकते हैं, और आप एक मानक पोस्ट लूप को सरल कर सकते हैं
टॉम जम्मू नॉवेल

इसके अलावा, वर्डप्रेस पोस्ट प्रकारों के लिए एक मानक संग्रह पृष्ठ प्रदान करता है, इसलिए आपके पास पहले से ही एक पोस्ट संग्रह होना चाहिए /videos/ कि लोड होगा archive-videos.php, कि कोई भी चारों ओर प्रश्नों के साथ खिलवाड़ की आवश्यकता है
टॉम जम्मू नॉवेल

जवाबों:


15

उत्तर मिला:

एक looong दिन के बाद वर्डप्रेस कोर को डीबग करने के बाद, मैं इस मुद्दे को हल करने में कामयाब रहा।

मूल रूप से, आपके पास एक पेज और एक ही नाम के साथ एक कस्टम पोस्ट टाइप होना चाहिए। यदि आप करते हैं, तो पर्मलिंक फिर से लिखना नियम भ्रमित हो जाएगा और 404 को ट्रिगर करेगा।

मेरे द्वारा उपयोग किया जा रहा एक बहुत ही सरल समाधान है: वह पृष्ठ जो कस्टम पोस्ट प्रकारों को सूचीबद्ध करता है उसे बहुवचन (जैसे। उत्पाद) में कहा जाता है और वास्तविक पोस्ट प्रकार का नाम एकवचन (जैसे। उत्पाद) में है। इसलिए वे संघर्ष नहीं करते हैं और यह सब ठीक है।

किया किया! उम्मीद है कि इससे लोगों का समय बचेगा।


6
मुझे लगता है, सिर्फ कस्टम पोस्ट नहीं, आपके पास एक पोस्ट और एक पेज भी नहीं हो सकता है।
रुटविक गांगुर्ड

4

लंबे समय के बाद मुझे इस मुद्दे का हल मिला (धन्यवाद फ्रैंजब्लॉग )।

यदि आप संस्करण 4.2 या उच्चतर का उपयोग कर रहे हैं, तो आपको अपने में निम्नलिखित पंक्तियों को जोड़ना होगा functions.php फ़ाइल :

add_filter( 'redirect_canonical', 'custom_disable_redirect_canonical' );
function custom_disable_redirect_canonical( $redirect_url ) {
    if ( is_paged() && is_singular() ) $redirect_url = false; 
    return $redirect_url; 
}

अब सब कुछ ठीक चल रहा है!


1

आप एक पेज और एक ही नाम के साथ एक कस्टम पोस्ट टाइप करना चाहते हैं

शायद पेड़ साल पहले यह असंभव था, लेकिन अब आप कर सकते हैं।

सबसे पहले, इस पंक्तियों को $argsअपने पोस्ट प्रकार में जोड़ें :

'has_archive' => false,
'rewrite'     => array(
                 'slug'       => 'your slug', // if you need slug
                 'with_front' => false,
                 ),

दूसरा, functions.phpजोड़ने की क्रिया में:

add_action('init', 'custom_rewrite_basic');
function custom_rewrite_basic() {
    global $wp_post_types;
    foreach ($wp_post_types as $wp_post_type) {
        if ($wp_post_type->_builtin) continue;
        if (!$wp_post_type->has_archive && isset($wp_post_type->rewrite) && isset($wp_post_type->rewrite['with_front']) && !$wp_post_type->rewrite['with_front']) {
            $slug = (isset($wp_post_type->rewrite['slug']) ? $wp_post_type->rewrite['slug'] : $wp_post_type->name);
            $page = get_page_by_slug($slug);
            if ($page) add_rewrite_rule('^' .$slug .'/page/([0-9]+)/?', 'index.php?page_id=' .$page->ID .'&paged=$matches[1]', 'top');
        }
    }
}

function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) {
    global $wpdb;

    $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) );

    return ($page ? get_post($page, $output) : NULL);
}

डैशबोर्ड में नियमों को फ्लश करना न भूलें।

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