रीडायरेक्ट वाली कार्रवाई को जोड़ने के लिए किस हुक का उपयोग किया जाना चाहिए?


16

मैं एक प्लगइन बनाना चाहता हूं जो क्वेरी स्ट्रिंग से एक ही पृष्ठ के लिए एक नया क्वेरी स्ट्रिंग बनाने के लिए कुछ url params पकड़ लेता है। मैं उत्कृष्ट वर्डप्रेस प्लगइन विकास पुस्तक का अनुसरण कर रहा हूं, लेकिन मुझे यकीन नहीं है कि इस कार्रवाई के लिए कौन सा हुक का उपयोग करना है। यहाँ मेरी क्रिया है:

add_action( 'init', 'tccl_redirect' );
function tccl_redirect() {
    header ( "Location: http://www.mysite.com/$mypage?$newparam=$newvalue" );
?>

हेडर रीडायरेक्ट के लिए कौन से हुक उपयुक्त हैं?


क्या आप वास्तव में अंतिम URL या WP_Query में उपयोग किए गए चर को बदलना चाहते हैं?
13

आपके द्वारा पोस्ट किया गया कोड मूल रूप से हर पेज को रीडायरेक्ट करेगा, यह है कि आप क्या चाहते हैं? यह पुनर्निर्देशन किन स्थितियों में होना चाहिए? नोट: मैं + 1'ed kaiser वैसे भी, template_redirectमेरा सुझाव भी होगा।
t31os

scribu, मैं अंतिम url और क्वेरी स्ट्रिंग बदलना चाहता हूं।
jnthnclrk

t31os, मैंने प्रश्न के लिए अपना कोड सरल कर दिया। असली बात में और शर्तें हैं।
jnthnclrk

परिणाम क्या था? एक समाधान को चिह्नित करें pls।
केसर

जवाबों:


13

जैसे केसर उत्तर दिया गया template_redirectहुक वास्तव में पुनर्निर्देश के लिए उपयुक्त है।

इसके अलावा आपको wp_redirect()हेडर सेट करने के बजाय फ़ंक्शन का उपयोग करना चाहिए ।


सुझाव के लिए धन्यवाद, यह जानकर बुरा नहीं लगेगा कि wp_redirect बेहतर क्यों है, यहाँ: wordpress.stackexchange.com/questions/12944/…
jnthnclrk

17

मैं कहूंगा template_redirect। लेकिन एक्शन रेफरेंस पर एक नजर ।

उदाहरण

exit()पुनर्निर्देशित करने के लिए मत भूलना ।

/**
 * This example redirects everything to the index.php page
 * You can do the same for the dashboard with admin_url( '/' );
 * Or simply base the redirect on conditionals like 
 * is_*() functions, current_user_can( 'capability' ), globals, get_current_screen()...
 * 
 * @return void
 */
function wpse12535_redirect_sample() {

    exit( wp_redirect( home_url( '/' ) ) );

}

add_action( 'template_redirect', 'wpse12535_redirect_sample' );

8

लेकिन मैं कहूंगा कि केसर से यह उदाहरण काम नहीं कर सकता है, क्योंकि एक रीडायरेक्ट के बाद यह हुक टेम्पलेट_रेड्री बार-बार काम करता है, आपके पास एक अंतहीन अग्रेषण होगा !

बेहतर है कि आप पहले से ही इस तरह से होमपेज पर हों,

function wpse12535_redirect_sample() {

    $current_url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    $site_url = get_bloginfo('siteurl') . "/";

    if($current_url != $site_url)       
      exit( wp_redirect( home_url( '/' ) ));    

}
add_action( 'template_redirect', 'wpse12535_redirect_sample');

मेरे लिए ठीक काम करता है। कोई सुझाव? सादर!

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