প্লাগইনটি সক্রিয় হয়ে গেলে কীভাবে সেটিংস পৃষ্ঠায় পুনর্নির্দেশ করবেন?


16

আমি আমার নিজস্ব প্লাগিন তৈরি করেছি। সবকিছু ঠিক আছে বলে মনে হচ্ছে তবে প্লাগইনটি সক্রিয় হওয়ার সাথে সাথে একটি প্লাগইনটিতে আমি যা করতে চাই তা সংশ্লিষ্ট প্লাগইন সেটিংস পৃষ্ঠাতে পুনর্নির্দেশ করা হয়।

উদাহরণ স্বরূপ:
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__পথ দিয়ে পুনরায় মূল্য দিতে হবে।

চিন্তা

আপনার প্লাগইনটি সক্রিয় হওয়ার পরে ব্যবহারকারীকে পুনর্নির্দেশ করা খুব ভাল পদ্ধতির নয়। ওয়ার্ডপ্রেসে আপনি প্রচুর পরিমাণে প্লাগইন সক্রিয় করতে পারেন। আপনি যদি এই পরিস্থিতিতে পুনর্নির্দেশ সঞ্চালন করেন তবে কি হবে? আপনি কিছু প্লাগইনগুলির অ্যাক্টিভেশনটি ভেঙে ফেলবেন, আপনার প্লাগইনটি যদি শেষ সক্রিয় হয় তবে তা না, তবে অবশ্যই আপনি ব্যবহারকারীর অভিজ্ঞতা ভঙ্গ করছেন।


1
অনেক সানির পন্থা। +1
কায়সার

এটি ব্যবহার করে অন্য কেউ সমস্যা পেয়েছেন যেখানে প্লাগইনটি সক্রিয় হতে ব্যর্থ হয় এবং এর পরিবর্তে আপনি "আপনার এই পৃষ্ঠাটি দেখার অনুমতি পাচ্ছেন না"? আমি কি আমার মেনু পৃষ্ঠা ভুল ভুল করছি? দেখে মনে হচ্ছে 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
@ কাইজার, উত্তর আপডেট হয়েছে।
iEmanuele

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");
    }
 }
}

এনএইচটি_ এটি আমার প্লাগইন উপসর্গ এবং "edit.php? post_type = শিরোনাম এবং পৃষ্ঠা = সংবাদ-শিরোনাম" পৃষ্ঠা পুনর্নির্দেশ। দয়া করে এগুলি প্রতিস্থাপন করুন। আপনি ই 2 এসফট.কম-এর
csehasib
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.