2011-02-09 13 views
6

अरे। मैं वर्डप्रेस में एक कस्टम पोस्ट प्रकार का उपयोग कर रहा हूँ। इन मानकों के साथ)वर्डप्रेस कस्टम पोस्ट प्रकार श्रेणियां

 register_post_type("lifestream", array(
      'label' => 'Lifestream', 
      'public' => true, 
      'hierarchical' => true, 
      'menu_position' => 5, 
      'supports' => array('title','editor','author','thumbnail','comments','custom-fields'), 
      'taxonomies' => array('category','post_tag'), 
      'query_var' => true, 
      'publicly_queryable' => true, 
      'exclude_from_search' => false, 
      'caller_get_posts' => 1 

     )); 
     register_taxonomy_for_object_type('category', 'lifestream'); 
     register_taxonomy_for_object_type('post_tag', 'lifestream'); 

विषय में (पाश टेम्पलेट) मुझे लगता है कि मैं query_posts उपयोग कर रहा हूँ, पोस्ट और अपने कस्टम पोस्ट प्रकार संयोजित करना चाहते (:

मैं इस कस्टम पोस्ट को इस प्रकार प्रकार दर्ज
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'post_type' => array('post', 'lifestream'), 
    'paged' => $paged, 
    'cat' => $wp_query->get('cat'), 
    'tag' => $wp_query->get('tag'), 
    'year' => $wp_query->get('year'), 
    'monthnum' => $wp_query->get('monthnum'), 
    'post_status' => 'publish', 
    'showposts' => 3 
); 
query_posts($args); 


# the loop  
while (have_posts()) : the_post(); 
# markup 
endwhile; 


if($wp_query->max_num_pages > 1): 
# next_posts_link/previous_posts_link 
endif; 

wp_reset_query(); 

यह अब तक काम कर रहा है। लेकिन, मुझे श्रेणी और टैग पृष्ठों के साथ समस्याएं आईं। अगर मैं फ्रंट पेज को कॉल करता हूं तो सबकुछ ठीक है और मैं सही परिणामों को प्राप्त करने वाले पृष्ठों के माध्यम से पेजिंग कर सकता हूं।

और, यदि मैं एक पेजेड यूआरएल कहता हूं, उदा।/श्रेणी/mycat/पेज/2 एक 404 फेंक दिया गया है। लेकिन निश्चित रूप से पद होना चाहिए। कोई फर्क नहीं पड़ता कि श्रेणी में कस्टम टाइप पोस्ट या मानक पद हैं। मुझे लगता है कि query_posts() के लिए मेरे पैरामीटर सही नहीं हैं, लेकिन पता नहीं ...

ऐसा लगता है कि $ wp_query-> max_num_pages का गलत मान है। पर क्यों? क्या मैं टैक्सोनोमी पंजीकृत करता हूं (मुझे अपने कस्टम पोस्ट प्रकारों के लिए श्रेणियों और टैग का उपयोग करना पसंद है) सही ढंग से?

क्या आपके पास कोई विचार है कि क्या करना है? आपका बहुत बहुत धन्यवाद!

उत्तर

2

मैं सिर्फ सही सामना करना पड़ा एक ही समस्या और समाधान कहीं भी नहीं मिला! इंटरनेट विषय के बारे में संसाधनों से भरे हुए हैं लेकिन किसी ने भी इस मुद्दे का सही उत्तर नहीं दिया है।

यहां खोजे जाने वाले किसी भी व्यक्ति का सही उत्तर है। नीचे दिए गए कोड को functions.php में अपनी थीम की रूट निर्देशिका में रखें।

function init_category($request) { 
    $vars = $request->query_vars; 
    if (is_category() && !is_category('Blog') && !array_key_exists('post_type', $vars)) : 
     $vars = array_merge(
      $vars, 
      array('post_type' => 'any') 
     ); 
     $request->query_vars = $vars; 
    endif; 
    return $request; 
} 
add_filter('pre_get_posts', 'init_category'); 

सभी क्रेडिट Mike जो Wordpress.com पर इस पोस्ट पर जाएँ। चीयर्स!

+0

मैं आपको अपने नोट्स से कोड का यह फॉर्म देने के लिए बस अचंभित था। बहुत बढ़िया। pre_get_posts हालांकि wrangle मुश्किल है! – BenRacicot

+0

मेरे लिए यह काम, सीपीटी के साथ एक ही समस्या है, धन्यवाद – MrRoman

0

वाकई इस जोड़े हैं:

'paged' => get_query_var('paged') 
अपने $ आर्ग को

और यह पेजिंग ठीक स्वीकार करना चाहिए।

अधिक here

+0

हे डेविड। धन्यवाद, लेकिन जैसा कि आप देख सकते हैं कि मैं paged तर्क को query_posts() पर पास करता हूं। या इसके साथ कुछ गलत है? – Status4

+0

अरे, मेरे बुरे। मेरा सुझाव है कि आप 'print_r ($ args) करते हैं;' यह देखने के लिए कि वास्तव में क्या भेजा जा रहा है - यह समस्या के रूप में आपका पहला संकेत हो सकता है। एक और बात: शोपोस्ट को हटा दिया गया है, इसके बजाय post_per_page का उपयोग करने का प्रयास करें। अंत में, आप स्पष्ट रूप से "nopaging" => false – David

+0

सेट करने का प्रयास कर सकते हैं, मैं इसे आज़मा दूंगा, धन्यवाद – Status4

0

में archive.php उपयोग करने का प्रयास करें:

query_posts(array(
    'post_type' => 'lifestream', 
    'posts_per_page' => 6, 
    'orderby' => 'menu_order', 
    'orderby' => 'date', 
    'order' => 'ASC', 
    'paged' => '' . get_query_var('paged') 
)); 

if (have_posts()) : while (have_posts()) : the_post(); 

endwhile; else: 
endif; 

मैं का उपयोग अगले और पिछले पृष्ठ लिंक के लिए:

next_posts_link('Older Entries', $wp_query->max_num_pages); 
previous_posts_link('Newer Entries', $wp_query->max_num_pages); 
संबंधित मुद्दे