प्लगइन सक्रिय होने के बाद सेटिंग्स पेज पर रीडायरेक्ट कैसे करें?


16

मैंने खुद का Plugin बनाया। सब कुछ ठीक लगता है, लेकिन एक चीज जो मैं उस प्लगइन में करना चाहता हूं, वह है कि प्लगिन सक्रिय होने पर संबंधित प्लगइन सेटिंग्स पेज पर रीडायरेक्ट हो जाए।

उदाहरण के लिए:
http://www.example.com/wordpress/wp-admin/options-general.php?page=rotator

क्या सक्रियण पर संबंधित पृष्ठ पर पुनर्निर्देशित करने का एक तरीका है, उदाहरण के लिए register_activation_hook?

जवाबों:


17

शायद wp_redirect()सक्रियण हुक में फ़ंक्शन का उपयोग करना । निम्नलिखित उदाहरण myplugin_settingsमें एक प्लेसहोल्डर है। आम तौर पर यह बस $hook_suffixआप से $hook_suffix = add_menu_page( /* etc. */ ); और इसी तरह के कार्यों से वापस मिलता है।

यह कोड काम नहीं करता है, पढ़ें नीचे

register_activation_hook(__FILE__, 'cyb_activation');
function cyb_activation()
{
    // Don't forget to exit() because wp_redirect doesn't exit automatically
    exit( wp_redirect( admin_url( 'options-general.php?page=myplugin_settings' ) ) );
}

संदर्भ:

  1. सक्रियण हुक पंजीकृत करें
  2. admin_url ()

संपादित करें

सक्रियण हुक के अंदर पुनर्निर्देशित किया जाना लगता है इससे पहले कि प्लगइन प्रभावी ढंग से सक्रिय हो, सक्रियण निष्पादित होने से पहले निकास () के कॉल के कारण हो सकता है। इस कोड का उपयोग अच्छी तरह से काम करने लगता है activated_plugin कार्रवाई hoook:

function cyb_activation_redirect( $plugin ) {
    if( $plugin == plugin_basename( __FILE__ ) ) {
        exit( wp_redirect( admin_url( 'options-general.php' ) ) );
    }
}
add_action( 'activated_plugin', 'cyb_activation_redirect' );

यदि आप मुख्य प्लगइन फ़ाइल के बाहर इस कोड का उपयोग करते हैं, तो आपको मुख्य प्लगइन फ़ाइल __FILE__के पथ के साथ पुनर्प्रकाशन करना होगा ।

विचार

आपके प्लगइन के सक्रिय होने के बाद उपयोगकर्ता को पुनर्निर्देशित करना बहुत अच्छा तरीका नहीं है। Wordpress में आप बड़ी मात्रा में प्लगइन्स को सक्रिय कर सकते हैं। यदि आप इस स्थिति में पुनर्निर्देशित करते हैं तो क्या होगा? आप कुछ प्लगइन्स के सक्रियण को तोड़ देंगे, हो सकता है कि यदि आपका प्लगइन अंतिम सक्रिय नहीं है, लेकिन निश्चित रूप से आप उपयोगकर्ता के अनुभव को तोड़ रहे हैं।


1
बहुत साधक दृष्टिकोण। +1
kaiser

किसी और को इसके इस्तेमाल से कोई समस्या हो रही है जहाँ प्लगइन सक्रिय नहीं हो पाता है और आपको इसके बजाय "इस पृष्ठ को देखने की अनुमति नहीं है" त्रुटि मिलती है? क्या मैं अपने मेनू पृष्ठ को गलत बता रहा हूं? ऐसा लगता है जैसे exit;कॉल सक्रियण को कम कर रहा है।
एंडी एडम्स

अनुमति त्रुटि है क्योंकि आपने रीडायरेक्शन URL 'options-general.php?page=myplugin_settings'को कुछ अलग और मान्य से नहीं बदला है। वैसे भी, exitसक्रियण हुक में प्लगइन प्रभावी रूप से सक्रिय होने से पहले निष्पादित किया जाता है, इसलिए यह काम नहीं करता है। मैंने उत्तर को एक नए कार्य कोड के साथ संपादित किया है।
साइबरमेट जू

कोड हेडर के परिणामस्वरूप पहले से ही भेजा गया है..इसको ठीक करने का तरीका?
लतीश वीएम विला

7

आपको इसे इस तरह से करने में सक्षम होना चाहिए:

register_activation_hook(__FILE__, 'my_plugin_activate');
add_action('admin_init', 'my_plugin_redirect');

function my_plugin_activate() {
    add_option('my_plugin_do_activation_redirect', true);
}
// Solution 1
function my_plugin_redirect() {
    if (get_option('my_plugin_do_activation_redirect', false)) {
        delete_option('my_plugin_do_activation_redirect');
         wp_redirect("options-general.php?page=rotator");
         //wp_redirect() does not exit automatically and should almost always be followed by exit.
         exit;
    }
}

// OR

//Solution 2 (@kaiser suggestion)
function my_plugin_redirect() {
    if (get_option('my_plugin_do_activation_redirect', false)) {
        delete_option('my_plugin_do_activation_redirect');
         exit( wp_redirect("options-general.php?page=rotator") );
    }
}

अपडेट करें

भले ही यह इनलाइन टिप्पणी हो, याद रखें:

wp_redirect () स्वचालित रूप से बाहर नहीं निकलता है और लगभग हमेशा निकास द्वारा पीछा किया जाना चाहिए।

विशिष्ट उदाहरण

<?php
    wp_redirect( $location, $status );
    exit;
?>

अद्यतन 10/29/2013

यह उल्लेख नहीं किया गया था, लेकिन कृपया ध्यान दें कि मेरा समाधान यह जांचने की क्षमता प्रदान करता है कि क्या मामला है या नहीं, प्लगइन सेटिंग्स पृष्ठ पर पुनर्निर्देशित करना है या नहीं। जाँच करें my_plugin_activateऔर यदि स्थिति में है my_plugin_redirect

आशा करता हूँ की ये काम करेगा!


वहाँ के exit()आसपास नहीं होना चाहिए wp_redirect()?
कैसर

2
@kaiser, उत्तर अपडेट किया गया।
ईमैन्यूले

3

हैलो, मैं प्लगइन सक्रियण के बाद धौंकनी कोड का उपयोग किया है। आप इस कोड का उपयोग कर सकते हैं। यह अच्छी तरह से काम कर रहा है।

register_activation_hook(__FILE__, 'nht_plugin_activate');
add_action('admin_init', 'nht_plugin_redirect');

function nht_plugin_activate() {
add_option('nht_plugin_do_activation_redirect', true);
}

function nht_plugin_redirect() {
if (get_option('nht_plugin_do_activation_redirect', false)) {
    delete_option('nht_plugin_do_activation_redirect');
    if(!isset($_GET['activate-multi']))
    {
        wp_redirect("edit.php?post_type=headline&page=news-headline");
    }
 }
}

nht_ मेरा प्लगइन उपसर्ग है और "edit.php; post_type = शीर्षक और पृष्ठ = समाचार-शीर्षक" पुनर्निर्देशित पृष्ठ है। कृपया इसे प्रतिस्थापित करें। आप e2soft.com
csehasib
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.