it-swarm-tr.com

Özel Bir Yazı Tipi Menüsünü Yazı Menüsünün üstüne yerleştirmek menu_position?

menu_position parametresini yeni öğrendim öyle görünüyor ki, özel yazı tipinizin menüsünü hemen hemen her yere yerleştirebilirsiniz. Mesajlar menüsü üstündeki hariç!

Bunu nasıl başarabilirim?

16
janoChen

Temel Menü Öğeleri için Konumlar

  • 2 Gösterge Tablosu
  • 4 Ayırıcı
  • 5 Gönderi
  • 10 medya
  • 15 Bağlantılar
  • 20 Sayfa
  • 25 Yorum
  • 59 Ayırıcı
  • 60 Görünüm
  • 65 Eklentiler
  • 70 Kullanıcılar
  • 75 Araçlar
  • 80 Ayarlar
  • 99 Ayırıcı

"menü konumu" için parametre açıklaması

$position ( integer ) (isteğe bağlı) Menü sırasındaki pozisyon bu menünün görünmesi gerekir. Varsayılan olarak, bu parametre belirtilmezse, menü menü yapısının altında görünecektir. Sayı ne kadar yüksek olursa menüdeki konumu o kadar düşük olur.

UYARI: eğer iki menü maddesi aynı pozisyon özelliğini kullanıyorsa, sadece bir öğenin görünmesi için materyallerden birinin üzerine yazılabilir! Tamsayı değerleri yerine ondalık kullanarak, örneğin; 63 yerine 63,3.

Varsayılan: menü yapısının altı

13
Michael Ecklund

Yeni JetPack Plugin, menü bağlantısını Dashboard bağlantısının hemen altına yerleştirir. Bunu menü sırasını 0 olarak ayarlayarak, $ menu_order dizisini :

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

Meraktan, menu_position olarak 0 deneseydin ne olurdu?

4
Chip Bennett

Bu WordPress'teki bir hatadır. Lütfen bu konuyu Trac'de görün: http://core.trac.wordpress.org/ticket/14755

4.4'te düzeltildi ...

https://developer.wordpress.org/reference/functions/add_menu_page/#notes

2
Merne

'Menu_postion' => 0, 1,2,3,4 kullandım.

Gerçekten önemli değil. Eğer onunla oynarsanız, kolayca çözebilirsiniz.

'Menu_position' => 1 kullanılarak ayırıcı öğesinin üstündeki Gösterge paneli menü öğesinin altına yerleştirilmelidir. 0 Gösterge Tablosunun üstüne yerleştirmeli

2
jaredwilli

Web üzerinde bir çözüm aranıyor ancak bulamadım. Basitçe bu hile yapar (örneğin). Burada yerel konumların bir listesi var:

  • 2 Gösterge Tablosu
  • 4 Ayırıcı
  • 5 Gönderi
  • 10 medya
  • 15 Bağlantılar
  • 20 Sayfa
  • 25 Yorum
  • 59 Ayırıcı
  • 60 Görünüm
  • 65 Eklentiler
  • 70 Kullanıcılar
  • 75 Araçlar
  • 80 Ayarlar
  • 99 Ayırıcı

Daha fazla öğeniz varsa, global $ menüsünü yazdırarak her öğenin geçerli konumunu okuyabilirsiniz:

global $menu; 
print_r($menu); 

Bu yüzden, eğer iyi anlarsam, hiçbir şey bizi istediğimiz gibi düzenleyemez.

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

Benim için gayet iyi çalışıyor, sanırım bu yasal, yanlış mıyım?

2
Nolan Crochot

işte bütün meselenin ihbarı ...

WordPress 4.9.2

wp-admin/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; 

DİKKAT: bir tamsayı olmalı ve önceden ayarlanmış OLMAMALI, aksi halde listenin en altına gider.

1
Artistan

Bunu kullanabilirsiniz:

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

Şimdi size Mesaj menüsünün üstüne menüyü eklemek için 5 konumunu kullanabilirsiniz.

1
eduardogoncalves

Bağladığınız bağlantıda, şunu okur:

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

Bu nedenle, eğer menu_position4 gibi bir şeye ayarlarsanız, yazıların üzerine koyması gerekir.

-1 konumu, onu Dashboard bağlantısının üstüne getirir.

1
Zack

WordPress 4.9'daki çalışan bir çözüm için, CPT'nizin menu_position değerini 6 olarak ayarlayın, Gönderiler 'den daha yüksek, ardından aşağıdaki kodla değiştirin:

add_filter('custom_menu_order', '__return_true');
add_filter('menu_order', function($menu_order) {
    $k = array_search($v = 'edit.php', $menu_order);
    $menu_order[$k] = $menu_order[$k + 1];
    $menu_order[$k + 1] = $v;
    return $menu_order;
});

Bu, kutup konumu için yarışan birden fazla menü öğenizin olmadığını varsayar.

1
Walf

Ondalık değerleri (dizge olarak) kullanabilirsiniz. Örneğin, menüdeki (100001, 100002, 100003) en son konuma yerleştirdiğim bazı özel yazı türlerim var.

Ardından, bu kodu sadece Yazılar ve/ Gösterge Tablosu menü öğelerinin üstüne taşımak için koyun.

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 );
0
Vladan