मैं जानना चाहता हूं कि मैं एक खोज URL को कैसे पुनः लिख सकता हूं जिसमें एक अतिरिक्त क्वेरी संस्करण शामिल है जिसमें एक बहुत ही पेर्मलिंक का उपयोग करके wp_redirect
और template_redirect
हुक है।
मैं से कोड ले लिया है नाइस खोजें जो परिवर्तन करने के लिए ठीक काम करता है प्लगइन http://example.com?s=africa
में http://example.com/search/africa
:
add_action( 'template_redirect', 'my_rewrite' ) );
function my_rewrite() {
if ( is_search() and false === strpos( $_SERVER['REQUEST_URI'], '/search/' ) ) {
wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) );
exit();
}
}
लेकिन मैं Relevanssi प्लगइन के साथ संयोजन में एक चुनिंदा ड्रॉपडाउन का उपयोग कर रहा हूं ताकि आगंतुकों को किसी विशेष पोस्ट प्रकार की खोज को कम करने की अनुमति मिल सके। यह एक post_type
क्वेरी संस्करण जोड़ता है , उदाहरण के लिए http://example.com?s=africa&post_type=features
। मैं चाहूंगा कि इसका URL कुछ पसंद आए http://example.com/search/africa/section/features
।
नाइस सर्च कोड के कारण post_type क्वेरी संस्करण खो जाता है। इसलिए मैंने निम्नलिखित कोड आज़माया:
function my_rewrite() {
if ( is_search() and false === strpos( $_SERVER['REQUEST_URI'], '/search/' ) ) {
if ( isset( $_GET['post_type'] ) and '' !== $_GET['post_type'] ) {
wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) . '/section/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 'post_type' ) ) ) );
} else {
wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) );
}
exit();
}
}
लेकिन वर्डप्रेस अब सोचता है कि खोज शब्द है africa/section/features
।
क्या कोई ऐसा तरीका है जिससे मैं खोज शब्द और क्वेरी संस्करण को एक अच्छे क्रम में रख सकूं?
धन्यवाद साइमन