मेनू मेनू का उपयोग करके पोस्ट मेनू के ऊपर एक कस्टम पोस्ट प्रकार मेनू रखना?


17

मुझे बस मेनू_पोजीशन पैरामीटर पता चला है, ऐसा लगता है कि आप अपने कस्टम पोस्ट प्रकार के मेनू को लगभग हर जगह रख सकते हैं। सिवाय मेनू मेनू के ऊपर!

मैं इसे कैसे पूरा कर सकता हूं?


अच्छा सवाल है, ऐसा लगता है कि यह एक जगह है जो यह नहीं जाएगी।
jnthnclrk

जवाबों:


14

कोर मेनू आइटम के लिए स्थिति

  • 2 डैशबोर्ड
  • 4 विभाजक
  • 5 पोस्ट
  • 10 मीडिया
  • 15 लिंक
  • 20 पृष्ठ
  • 25 टिप्पणियाँ
  • 59 विभाजक
  • 60 सूरत
  • 65 प्लगइन्स
  • 70 उपयोगकर्ता
  • 75 उपकरण
  • 80 सेटिंग्स
  • 99 विभाजक

"मेनू स्थिति" के लिए पैरामीटर विवरण

$position( पूर्णांक ) ( वैकल्पिक ) मेनू क्रम में यह मेनू दिखाई देना चाहिए। डिफ़ॉल्ट रूप से, यदि यह पैरामीटर छोड़ा जाता है, तो मेनू मेनू संरचना के निचले भाग में दिखाई देगा। संख्या जितनी अधिक होगी, मेनू में उसकी स्थिति उतनी ही कम होगी।

चेतावनी: यदि दो मेनू आइटम एक ही स्थिति विशेषता का उपयोग करते हैं, तो आइटम में से एक को अधिलेखित किया जा सकता है ताकि केवल एक आइटम प्रदर्शित हो! पूर्णांक मानों के बजाय दशमलव का उपयोग करके संघर्ष के जोखिम को कम किया जा सकता है, जैसे 63 के बजाय 63.3।

डिफ़ॉल्ट: मेनू संरचना के नीचे


4

नया 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 की कोशिश की?


2

मैंने 'menu_postion' => 0, 1,2,3,4 का उपयोग किया है।

वास्तव में कोई फर्क नहीं पड़ता। यदि आप इसके साथ खेलते हैं तो आप आसानी से इसका पता लगा सकते हैं।

'Menu_position' => 1 का उपयोग करके इसे विभाजक चीज़ के ऊपर डैशबोर्ड मेनू आइटम के नीचे रखना चाहिए। 0 इसे डैशबोर्ड के ऊपर रखना चाहिए


2

वेब पर एक समाधान की तलाश है, लेकिन नहीं मिला। बस यह ट्रिक (उदाहरण के लिए) है। यहां आपके पास पदों की मूल सूची है:

  • 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');

यह मेरे लिए ठीक काम करता है, मुझे लगता है कि यह वैध है, मैं गलत हूं?


बहुत नाजुक समाधान जो जादू की संख्या पर निर्भर करता है । जैसे ही कुछ अन्य प्लगइन को जोड़ा जाता है / हटा दिया जाता है, जो दूसरों के बीच एक आइटम रखता है।
वाल्फ


1

आप इसका उपयोग कर सकते हैं:

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 का उपयोग कर सकते हैं।


इसने मेरे लिए काम नहीं किया। मैंने इसे अपने साइटवॉइड प्लगइन के भीतर रखा, जहाँ मेरी कस्टम-पोस्ट-टाइप.फपी फाइल है
डैनियल

1

यहाँ पूरे मामले के लिए चेतावनी है ...

वर्डप्रेस 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; 

सूचना: एक पूर्णांक होना चाहिए और पहले से ही सेट नहीं होना चाहिए, अन्यथा यह सूची के निचले हिस्से में जाता है।


1

वर्डप्रेस 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;
});

यह मानता है कि आपके पास पोल की स्थिति के लिए एक से अधिक मेनू आइटम नहीं हैं।


0

आपके द्वारा लिंक किए गए लिंक पर, यह पढ़ता है:

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


मैं 4 की कोशिश की, लेकिन यह बिल्कुल 5 के रूप में ही है
janoChen

मानव संसाधन विकास मंत्री। 1-3 की कोशिश की? मुझे लगता है कि शायद "1" (या "0") डैशबोर्ड है। शायद कुछ 2-3 काम करेगा
ज़ेक

डैशबोर्ड से पहले ० १ २ ३ गो और पोस्ट के नीचे ४ गो हो जाते हैं। वास्तव में असंभव है!
जोंचेन

वाह। बहुत टूट गया वर्डप्रेस? मैं नहीं जानता। : - /
ज़ैक

मुझे लगता है कि 4 पोस्ट के ठीक ऊपर विभाजक है, और 5 पोस्ट है, इसलिए यदि आप अपने मेनू-स्थिति को 3 पर सेट करते हैं तो यह विभाजक से ठीक पहले होगा। निश्चित रूप से डिफ़ॉल्ट विन्यास के साथ। मेरे प्लगइन पेज को 4 सेपरेटर में सेट किया, लेकिन पोस्ट के ठीक ऊपर दिखाई दिया। हम्म् ...
सुनहरीमछली

0

आप दशमलव मान (स्ट्रिंग के रूप में) का उपयोग कर सकते हैं। उदाहरण के लिए, मेरे पास कुछ कस्टम पोस्ट प्रकार हैं जिन्हें मैंने मेनू में अंतिम स्थिति (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 );
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.