मुझे बस मेनू_पोजीशन पैरामीटर पता चला है, ऐसा लगता है कि आप अपने कस्टम पोस्ट प्रकार के मेनू को लगभग हर जगह रख सकते हैं। सिवाय मेनू मेनू के ऊपर!
मैं इसे कैसे पूरा कर सकता हूं?
मुझे बस मेनू_पोजीशन पैरामीटर पता चला है, ऐसा लगता है कि आप अपने कस्टम पोस्ट प्रकार के मेनू को लगभग हर जगह रख सकते हैं। सिवाय मेनू मेनू के ऊपर!
मैं इसे कैसे पूरा कर सकता हूं?
जवाबों:
कोर मेनू आइटम के लिए स्थिति
"मेनू स्थिति" के लिए पैरामीटर विवरण
$position
( पूर्णांक ) ( वैकल्पिक ) मेनू क्रम में यह मेनू दिखाई देना चाहिए। डिफ़ॉल्ट रूप से, यदि यह पैरामीटर छोड़ा जाता है, तो मेनू मेनू संरचना के निचले भाग में दिखाई देगा। संख्या जितनी अधिक होगी, मेनू में उसकी स्थिति उतनी ही कम होगी।चेतावनी: यदि दो मेनू आइटम एक ही स्थिति विशेषता का उपयोग करते हैं, तो आइटम में से एक को अधिलेखित किया जा सकता है ताकि केवल एक आइटम प्रदर्शित हो! पूर्णांक मानों के बजाय दशमलव का उपयोग करके संघर्ष के जोखिम को कम किया जा सकता है, जैसे 63 के बजाय 63.3।
डिफ़ॉल्ट: मेनू संरचना के नीचे
नया JetPack प्लगइन डैशबोर्ड लिंक के ठीक नीचे अपना मेनू लिंक रखता है। यह $ menu_order सरणी को फ़िल्टर करके अपने मेनू ऑर्डर को 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 की कोशिश की?
मैंने 'menu_postion' => 0, 1,2,3,4 का उपयोग किया है।
वास्तव में कोई फर्क नहीं पड़ता। यदि आप इसके साथ खेलते हैं तो आप आसानी से इसका पता लगा सकते हैं।
'Menu_position' => 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');
यह मेरे लिए ठीक काम करता है, मुझे लगता है कि यह वैध है, मैं गलत हूं?
यह वर्डप्रेस में एक बग है। कृपया इस धागे को Trac: http://core.trac.wordpress.org/ticket/14755 पर देखें
4.4 में तय ...
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');
अब आप Post मेनू के ऊपर मेनू जोड़ने के लिए स्थिति 5 का उपयोग कर सकते हैं।
यहाँ पूरे मामले के लिए चेतावनी है ...
वर्डप्रेस 4.9.2
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;
});
यह मानता है कि आपके पास पोल की स्थिति के लिए एक से अधिक मेनू आइटम नहीं हैं।
आपके द्वारा लिंक किए गए लिंक पर, यह पढ़ता है:
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 );