पासिंग और वर्डप्रेस में क्वेरी वार्स प्राप्त करना


16

मेरे पास दो लेखक पृष्ठ हैं, एक 5 पोस्टों के बारे में प्रदर्शित करता है। फिर मैं एक और पेज सेटअप करने की कोशिश कर रहा हूं जो उनके सभी पोस्ट होंगे। मैंने moreauthorposts.php नामक एक टेम्पलेट बनाया है और मैं इस पृष्ठ पर लेखक चर को पास करने की कोशिश कर रहा हूं। समस्या यह है कि यदि मैं domain.com/more-author-posts?author=johndoe पास करता हूं तो यह छीन लिया जाता है। मैं यह मान कैसे प्राप्त कर सकता हूं? क्या यह वर्डप्रेस में भी संभव है? मुझे पता है कि WP Rewrite मेरी URL संरचना को किसी तरह से जैक कर रहा है, मुझे यकीन नहीं है।

मैंने कोशिश की:

get_query_var('author')

और इसे पढ़ने की कोशिश की लेकिन कोई किस्मत नहीं थी:

http://codex.wordpress.org/Query_Overview

सुझाव?

धन्यवाद।

जवाबों:


21

मुझे लगभग यकीन है कि authorअंतर्निहित है, इसलिए कुछ का उपयोग करें author_more। आपको query_varsपहले उस संस्करण को जोड़ना होगा । उदाहरण:

// add `author_more` to query vars
add_filter( 'init', 'add_author_more_query_var' );
function add_author_more_query_var()
{
    global $wp;
    $wp->add_query_var( 'author_more' );
}

फिर अपने more-author-posts.phpटेम्पलेट पर इसे इस तरह से कॉल करें:

if ( get_query_var( 'author_more' ) )
{
    // do your stuff
}

अपडेट करें

यह निम्नलिखित यूआरएल उदाहरण / उपयोग के मामले में काम करता है:

http://example.com/index.php?author_more=value

लेकिन अगर आप इसे फैंसी यूआरएल के रूप में उपयोग करना चाहते हैं, तो आपको फिर से लिखना होगा:

add_action('init','add_author_more_rewrite_rule');
function add_author_more_rewrite_rule()
{
    add_rewrite_rule(
        'more-author-posts/(\d*)$',
        'index.php?author_more=$matches[1]',
        'top'
    );
}

अब आप इसे इस तरह से उपयोग कर सकते हैं

http://example.com/more-author-posts/value

ठीक है तो मैंने क्वेरी var को functions.php में जोड़ा। फिर अन्य कोड को मेरे अधिक लेखक पदों में जोड़ा। इनसे गुजरने के लिए सही URL संरचना क्या होगी? मुझे पता है कि पृष्ठांकित / पृष्ठ / 2 के प्रारूप का उपयोग करता है, लेकिन अधिक-लेखक-पोस्ट / more_author / johndoe doesnt 'काम करने लगते हैं?
कोडिसेफवा

मैं जवाब अद्यतन
Bainternet

समस्या यह है कि var को index.php में पास करने की कोशिश नहीं की जा रही है। Im उन्हें कस्टम टेम्पलेट में पारित करने की कोशिश कर रहा हूं जो मैंने विकसित किए हैं क्योंकि यह सूचकांक से पूरी तरह से अलग दिखता है। तो अगर मैं moreauthor.php करने के लिए मान पारित करता हूं? Author_more = johndoe .. कि काम नहीं लगता। यहां कुछ गलत हो रहा है?
कोडिसेफवा

@ בייית אתרים एक बहुत स्पष्ट जवाब की तरह लग रहा है! @codeisforeva आपको सीधे टेम्प्लेट फ़ाइल को कॉल नहीं करना चाहिए, क्या आपको करना चाहिए? index.php सिर्फ वर्डप्रेस की रूट फाइल है, हर रीराइट नियम को वहां से गुजरना चाहिए।
सुनहरीमछली

1
@codeisforeva: index.phpपुनर्लेखन नियम index.phpमें वर्डप्रेस की रूट डायरेक्टरी में है, न कि index.phpआपकी टेम्पलेट फ़ाइल में। आप अभी भी चुन सकते हैं कि किस टेम्पलेट को template_includeफ़िल्टर में हुक करके प्रदर्शित किया जाना चाहिए ।
Jan Fabry
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.