ওয়ার্ডপ্রেস অ্যাডমিন মেনুটি কীভাবে তৈরি হয় তার একটি দ্রুত পদক্ষেপ এখানে দেওয়া হয়েছে - আমি add_menu_pageএপিআইয়ের কথা বলছি না , আমি আসল ডিফল্ট ওয়ার্ডপ্রেস মেনু বলতে চাইছি।
মেনু ফাইল কল করা হচ্ছে
মেনু একথাও ঠিক যে, দ্বারা লোড হয় wp-admin/admin.php। তবে এটি ওয়ার্ডপ্রেস ডকুমেন্টেশনের উপর ভিত্তি করে আমরা যে স্ট্যান্ডার্ড এপিআই ব্যবহার করে আসছি তা দিয়ে বোঝানো হয়নি। পরিবর্তে, সম্পূর্ণ মেনু (সমস্ত সম্ভাব্য বিকল্প, সাবমেনাস, ইত্যাদি) একটি সাধারণ অ্যারের মাধ্যমে বোঝানো হয়েছে যা সংজ্ঞায়িত করা হয়েছে wp-admin/menu.php।
সুতরাং মেনু সিস্টেম বুট করার জন্য, admin.phpশুধু requireগুলি menu.phpওয়ার্ডপ্রেস 3.0 ... লাইন 99 প্রায়।
মেনু লোড হচ্ছে
মেনুটি নিজেই বিশ্বব্যাপী অ্যারেতে সঞ্চয় করা হয় $menu। ইন-লাইন ডকুমেন্টেশন অনুসারে মেনু অ্যারেতে এই উপাদানগুলি রয়েছে:
The elements in the array are:
* 0: Menu item name
* 1: Minimum level or capability required.
* 2: The URL of the item's file
* 3: Class
* 4: ID
* 5: Icon for top level menu
উদাহরণস্বরূপ, ড্যাশবোর্ডটি হ'ল:
$menu[2] = array( __('Dashboard'), 'read', 'index.php', '', 'menu-top menu-top-first menu-icon-dashboard', 'menu-dashboard', 'div' );
ফাইলটি প্রতিটি মেনু আইটেমটি অ্যারেতে লোড করে এবং তাদের সমস্ত সাব-মেনু আইটেমগুলিকে একটি অ্যারেতে লোড $submenuকরে যা অভিভাবক মেনুর URL এর ভিত্তিতে সূচক বলে । সুতরাং "ড্যাশবোর্ড" নামে ড্যাশবোর্ডের সাবমেনু আইটেমটি হ'ল:
$submenu[ 'index.php' ][0] = array( __('Dashboard'), 'read', 'index.php' );
সিস্টেমটি সমস্ত মেনু লোড করার পরে (অনেকগুলি নেই, তবে সিস্টেমটি সূচীটি 5 বা 10 দ্বারা সময়ে সময়ে পদক্ষেপ নেয় ... লক্ষ্য করুন যে ড্যাশবোর্ড, এটি প্রথম মেনু আইটেম হলেও, এখনও সূচিযুক্ত হিসাবে রয়েছে আইটেম "2" (পিএইচপি অ্যারে সূচি 0 তে শুরু হয় ... সুতরাং এটি আপনাকে কিছু কৌশল চালানোর ঘর দেয়)।
এই মুহুর্তে, সিস্টেম কল করে wp-admin/includes/menu.php।
মেনু দিয়ে পা রেখে
এই তৃতীয় ফাইলটি প্রতিটি মেনু আইটেমের মধ্য দিয়ে যায় এবং বর্তমান ব্যবহারকারীর জন্য নির্ধারিত সুবিধার ভিত্তিতে হয় মেনুটি ব্যবহার করে অথবা এটি মুছে ফেলে। প্রথমে এটি সমস্ত সাব-মেনুতে লুপ করে এবং ব্যবহারকারী অ্যাক্সেস করতে পারে না এমন পৃষ্ঠাগুলি সরিয়ে দেয়। তারপরে এটি প্যারেন্ট পৃষ্ঠাগুলি থেকে লুপ করে এবং একই জিনিসটি করে। তারপরে এটি কোনও ডুপ্লিকেট বিভাজককে সরিয়ে দেয় যা মেনুগুলি অপসারণ থেকে বিরত থাকে।
অবশেষে, এটি তাদের নির্ধারিত মেনু ক্রমের ভিত্তিতে মেনুগুলি বাছাই করে।
কাস্টম মেনু অর্ডার
হুক admin_menuপর মেনু স্থাপন করা হয়েছে বলা হয় কিন্তু আগে কিছু নির্দেশ দেওয়া হয়। সুতরাং API কে "হ্যাকিং" না করে পুরো ওয়ার্ডপ্রেস মেনু সিস্টেমে অর্ডার দেওয়া সম্ভব।
ক্রিয়াটি admin_menuবরখাস্ত করার পরে , আপনার কাস্টম পৃষ্ঠাগুলি সিস্টেমে লোড হবে। এর পরেরটি ঘটবে, ওয়ার্ডপ্রেস হ'ল একটি ফিল্টার যাচাই করে custom_menu_order... এই ফিল্টারটি সর্বদা ফিরে আসে falseএবং আপনি কাস্টম অর্ডার ব্যবহার করতে চান কিনা তা ওয়ার্ডপ্রেসকে বলে।
trueপরিবর্তে পতাকা সেট করতে এবং আপনার সুস্পষ্ট মেনু অর্ডারটি সংজ্ঞায়িত করতে আপনার থিমটিতে নিম্নলিখিতগুলি যুক্ত করুন :
function custom_menu_order($menu_ord) {
if (!$menu_ord) return true;
return array('index.php', 'edit.php', 'edit-comments.php');
}
add_filter('custom_menu_order', 'custom_menu_order');
add_filter('menu_order', 'custom_menu_order');
সমস্ত মেনুগুলির জন্য আপনি যে ক্রমটি চান তা সুনির্দিষ্ট করুন (আমি মেনু-লোডিং ফাইলের জন্য রেফারেন্স সরবরাহ করেছি যাতে আপনি ফাইলের একটি তালিকা পেতে পারেন) এবং এটি এর যত্ন নেওয়া উচিত।
সম্পাদনা (9/2/2010):
এই পদ্ধতিটি ব্যবহার করে একটি কাস্টম পোস্ট টাইপের সম্পাদনা পর্দার ক্রম নির্দিষ্ট করতে, আপনাকে সম্পাদনার স্ক্রিনের URL জানতে হবে। আমি বেশিরভাগ ক্ষেত্রে, এটি হবে http://blog.url/wp-admin/edit.php?post_type=POST_TYPE। এটি ওয়ার্ডপ্রেস কীভাবে আপনার সাইটে সেট আপ করা হয় (যদি এটি রুটে বা সাবফোল্ডারে ইনস্টল থাকে) এবং আপনি যে কাস্টম পোস্টের ধরণটি ব্যবহার করছেন তার উপর নির্ভর করে।
উদাহরণ স্বরূপ...
ধরা যাক আপনার স্ট্যাক এক্সচেঞ্জ প্রশ্নগুলির জন্য একটি কাস্টম পোস্ট টাইপ রয়েছে এবং আপনি সম্পাদকটি ড্যাশবোর্ড আইকনের নীচে ড্যাশবোর্ডের মতো একই বিভাগে উপস্থিত হওয়া চাই। আপনি আপনার থিমের functions.phpফাইলটিতে নিম্নলিখিত কোডগুলি ব্যবহার করবেন :
function custom_menu_order($menu_ord) {
if (!$menu_ord) return true;
return array('index.php', 'edit.php?post_type=stack_exchange_questions');
}
add_filter('custom_menu_order', 'custom_menu_order');
add_filter('menu_order', 'custom_menu_order');
মেনুটির বাকী অংশগুলি প্রভাবিত হবে না, তবে আপনার কাস্টম সম্পাদনা পৃষ্ঠাটি ড্যাশবোর্ডের মতো একই বিভাগে স্থানান্তরিত হবে এবং এর সাথে সাথেই এটি প্রদর্শিত হবে। আপনি আপনার কাস্টম পোস্ট প্রকারগুলি অ্যাডমিন মেনুর যে কোনও বিভাগে স্থানান্তর করতে এবং এটিকে যে কোনও ক্রমে স্থাপন করতে এটি ব্যবহার করতে পারেন। আপনি একই পদ্ধতিতে স্ট্যান্ডার্ড মেনু আইটেমগুলিও সরাতে পারেন।
কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনি প্রদত্ত বিভাগে সমস্ত মেনু আইটেমের ক্রম নির্দিষ্ট করেছেন , অন্যথায় আপনার মেনুটি কিছু অপ্রত্যাশিত অদ্ভুততার বিষয় হতে পারে।