আমি স্রেফ মেনু_ অবস্থানের প্যারামিটারটি বের করেছিলাম বলে মনে হচ্ছে আপনি নিজের কাস্টম পোস্ট টাইপের মেনুটি প্রায় সর্বত্রই রাখতে পারবেন। উপরে পোস্ট মেনু ছাড়া!
আমি কীভাবে এটি সম্পাদন করতে পারি?
আমি স্রেফ মেনু_ অবস্থানের প্যারামিটারটি বের করেছিলাম বলে মনে হচ্ছে আপনি নিজের কাস্টম পোস্ট টাইপের মেনুটি প্রায় সর্বত্রই রাখতে পারবেন। উপরে পোস্ট মেনু ছাড়া!
আমি কীভাবে এটি সম্পাদন করতে পারি?
উত্তর:
কোর মেনু আইটেমের জন্য অবস্থানগুলি
"মেনু অবস্থান" এর জন্য প্যারামিটারের বিবরণ
$position
( পূর্ণসংখ্যা ) ( al চ্ছিক ) মেনুতে অবস্থানটি এই মেনুতে প্রদর্শিত হওয়া উচিত। ডিফল্টরূপে, যদি এই পরামিতি বাদ দেওয়া হয়, মেনুটি মেনু কাঠামোর নীচে উপস্থিত হবে। সংখ্যাটি যত বেশি, মেনুতে এর অবস্থানটি তত কম।সতর্কতা: দুটি মেনু আইটেম যদি একই অবস্থানের বৈশিষ্ট্যটি ব্যবহার করে তবে আইটেমগুলির মধ্যে একটিতে ওভাররাইট করা যেতে পারে যাতে কেবল একটি আইটেম প্রদর্শিত হয়! পূর্ণসংখ্যার মানগুলির পরিবর্তে দশমিক ব্যবহার করে সংঘাতের ঝুঁকি হ্রাস করা যায়, যেমন 63 63 এর পরিবর্তে .3৩.৩
ডিফল্ট: মেনু কাঠামোর নীচে
নতুন জেটপ্যাক প্লাগইনটি ডেনবোর্ডের লিঙ্কের ঠিক পরে এর মেনু লিঙ্কটি রাখে। এটি তাই করে তার মেনু অর্ডার 0 এ সেট করে, $ মেনু_অর্ডার অ্যারে ফিল্টার করে এটি করে :
function jetpack_menu_order( $menu_order ) {
$jp_menu_order = array();
foreach ( $menu_order as $index => $item ) {
if ( $item != 'jetpack' )
$jp_menu_order[] = $item;
if ( $index == 0 )
$jp_menu_order[] = 'jetpack';
}
return $jp_menu_order;
}
কৌতূহলের বাইরে, আপনি 0 টি মেনু_পজিশন হিসাবে চেষ্টা করলে কী হবে?
আমি 'মেনু_পোশন' => 0, 1,2,3,4 ব্যবহার করেছি।
আসলেই কিছু যায় আসে না। আপনি যদি এটির সাথে চারপাশে খেলেন তবে আপনি সহজেই এটি বের করতে পারেন।
'মেনু_পজিশন' => 1 ব্যবহার করে এটি পৃথককারী জিনিসের উপরে ড্যাশবোর্ড মেনু আইটেমের নীচে স্থাপন করা উচিত। 0 এটি ড্যাশবোর্ডের উপরে স্থাপন করা উচিত
ওয়েবে সমাধান খুঁজছেন কিন্তু খুঁজে পেলেন না। কেবল এই কৌশলটি (উদাহরণস্বরূপ) করে। এখানে আপনার অবস্থানের স্থানীয় তালিকা রয়েছে:
- 2 ড্যাশবোর্ড
- 4 বিভাজক
- 5 টি পোস্ট
- 10 মিডিয়া
- 15 লিঙ্ক
- 20 পৃষ্ঠা
- 25 মন্তব্য
- 59 বিভাজক
- 60 উপস্থিতি
- 65 প্লাগইন
- 70 জন ব্যবহারকারী
- 75 টি সরঞ্জাম
- 80 সেটিংস
- 99 বিভাজক
আপনার যদি আরও আইটেম থাকে তবে আপনি গ্লোবাল $ মেনুটি মুদ্রণ করে প্রতিটি আইটেমের বর্তমান অবস্থানটি পড়তে পারেন:
global $menu;
print_r($menu);
সুতরাং আমি যদি ভালভাবে বুঝতে পারি তবে কিছুই আমাদের পক্ষে মেনুটিকে পুনরায় অর্ডার করতে বাধা দিতে পারে না:
function re_order_menu () {
// ------- Put away items
$dashboard = $menu[2]
$separator1 = $menu[4]
$posts = $menu[5]
$media = $menu[10]
$links = $menu[15]
$pages = $menu[20]
$comments = $menu[25]
$separator2 = $menu[59]
$appearance = $menu[60]
$plugins = $menu[65]
$users = $menu[70]
$tools = $menu[75]
$settings = $menu[80]
$separator3 = $menu[99]
// -------- Reset menu
unset($menu[2]);
unset($menu[4]);
unset($menu[5]);
unset($menu[10]);
unset($menu[15]);
unset($menu[20]);
unset($menu[25]);
unset($menu[59]);
unset($menu[60]);
unset($menu[65]);
unset($menu[70]);
unset($menu[75]);
unset($menu[80]);
unset($menu[99]);
// -------- Re-order menu as you want
$dashboard = $menu[2];
$separator1 = $menu[4]
$posts = $menu[5];
$books = $menu[6];
/* my tons of custom items */
$authors = $menu[7];
$requests = $menu[8];
$clients = $menu[9];
$sellers = $menu[10];
$services = $menu[11];
$schedules = $menu[12];
/* let some space after */
$media = $menu[30];
$links = $menu[31];
$pages = $menu[32];
$comments = $menu[33];
$separator2 = $menu[59];
$appearance = $menu[60];
$plugins = $menu[65];
$users = $menu[70];
$tools = $menu[75];
$settings = $menu[80]
$separator3 = $menu[99];
}
add_action('admin_menu', 're_order_menu');
এটি আমার পক্ষে ঠিক কাজ করে, আমি মনে করি এটি বৈধ, আমি ভুল?
এটি ওয়ার্ডপ্রেসে একটি বাগ। দয়া করে এই থ্রেডটি ট্র্যাকটিতে দেখুন: http://core.trac.wordpress.org/ticket/14755
৪.৪ এ স্থির করা হয়েছে ...
https://developer.wordpress.org/reference/functions/add_menu_page/#notes
আপনি এটি ব্যবহার করতে পারেন:
function my_move_post () {
global $menu;
$menu[6] = $menu[5]; //move post from post 5 to 6
unset($menu[5]); //free the position 5 so you can use it!
}
add_action('admin_menu', 'my_move_post');
পোস্টের মেনুর উপরে আপনাকে মেনু যুক্ত করতে এখন আপনি অবস্থান 5 ব্যবহার করতে পারেন।
এখানে পুরো ইস্যুতে সতর্কতা ...
ওয়ার্ডপ্রেস ৪.৯.২
WP-অ্যাডমিন / menu.php:
// If we're to use $_wp_last_object_menu, increment it first.
$ptype_menu_position = is_int( $ptype_obj->menu_position ) ? $ptype_obj->menu_position : ++$_wp_last_object_menu;
বিজ্ঞপ্তি: অবশ্যই একটি পূর্ণসংখ্যার হতে হবে এবং এটি ইতিমধ্যে সেট করা নেই, অন্যথায় এটি তালিকার নীচে যায়।
ওয়ার্ডপ্রেস 5 এবং এর নীচে কাজের সমাধানের জন্য, নিম্নলিখিত কোডের সাথে এটি প্রতিস্থাপন করুন:
add_filter('custom_menu_order', '__return_true');
add_filter('menu_order', function($menu_order) {
if (
false !== ($k1 = array_search($v1 = 'edit.php', $menu_order))
&& false !== ($k2 = array_search($v2 = 'edit.php?post_type=foo', $menu_order))
) {
array_splice($menu_order, $k1, 0, $v2);
array_splice($menu_order, $k2 + 1, 1);
}
return $menu_order;
});
এটি ধরে নেয় আপনার পোলের অবস্থানের জন্য একাধিক মেনু আইটেম নেই v
আপনি যে লিঙ্কটি সংযুক্ত করেছেন, একই লিঙ্কে এটি পড়ে:
menu_position
(integer) (optional) The position in the menu order the post type should appear.
Default: null - defaults to below Comments
5 - below Posts
10 - below Media
20 - below Pages
60 - below first separator
100 - below second separator
সুতরাং, আপনি যদি menu_position
এমন কোনও কিছু সেট করে থাকেন 4
তবে তা পোস্টের উপরে রাখা উচিত।
একটি অবস্থান -1
এটিকে Dashboard
লিঙ্কের উপরে রাখে ।
আপনি দশমিক মান (স্ট্রিং হিসাবে) ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আমার কিছু কাস্টম পোস্ট টাইপ রয়েছে যা আমি মেনুতে শেষ অবস্থানে রেখেছি (100001, 100002, 100003)।
তারপরে, পোস্টের উপরে এবং ড্যাশবোর্ড মেনু আইটেমগুলির নীচে তাদের সরানোর জন্য কেবল এই কোডটি দিন ।
function reorder_admin_menu() {
global $menu;
// Add one separator
$menu["3.1"] = array(
0 => '',
1 => 'read',
2 => 'separator_' . "anything_unique",
3 => '',
4 => 'wp-menu-separator'
);
// I have put my menu items waay at the end (exactly these values), so move them up
$menu["3.2"] = $menu[100001];
$menu["3.3"] = $menu[100002];
$menu["3.4"] = $menu[100003];
unset($menu[100001]);
unset($menu[100002]);
unset($menu[100003]);
// move Media menu (position 10) item to front, in the same group
$menu["3.5"] = $menu[10];
unset($menu[10]);
// Debug: ksort($menu); error_log( var_export( $menu, true ) );
}
add_action( 'admin_menu', 'reorder_admin_menu', 999 );