Özel Yazı Türü Menüsü Yerleştirme Yazı Menüsünün Üstüne menu_position?


Yanıtlar:


14

Çekirdek Menü Öğelerinin Konumları

  • 2 Gösterge Tablosu
  • 4 Ayırıcı
  • 5 Gönderiler
  • 10 Medya
  • 15 Bağlantılar
  • 20 sayfa
  • 25 Yorum
  • 59 Ayırıcı
  • 60 Görünüm
  • 65 Eklenti
  • 70 Kullanıcı
  • 75 Takımlar
  • 80 Ayarlar
  • 99 Ayırıcı

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

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

UYARI: iki menü öğesi aynı pozisyon özelliğini kullanıyorsa, sadece bir öğe görüntülenmesi için öğelerden birinin üzerine yazılabilir! Çatışma riski, tamsayı değerleri yerine ondalık kullanılarak, örneğin 63 yerine 63,3 kullanılarak azaltılabilir.

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


4

Yeni JetPack Eklentisi, menü bağlantısını Gösterge Tablosu bağlantısının hemen altına yerleştirir. Bunu , menü sırasını 0 olarak ayarlayarak, $ menu_order dizisini filtreleyerek yapar. :

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, 0'ı menu_position olarak denerseniz ne olur?


2

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

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

'Menu_position' => 1 kullanıldığında, ayırıcı öğenin üzerindeki Gösterge Tablosu menü öğesinin altına yerleştirilmelidir. 0 Gösterge Tablosunun üzerine yerleştirilmelidir


2

Web'de bir çözüm arıyor ancak bulamadık. Basitçe bu hile yapar (örneğin). Burada yerel konum listeniz var:

  • 2 Gösterge Tablosu
  • 4 Ayırıcı
  • 5 Gönderiler
  • 10 Medya
  • 15 Bağlantılar
  • 20 sayfa
  • 25 Yorum
  • 59 Ayırıcı
  • 60 Görünüm
  • 65 Eklenti
  • 70 Kullanıcı
  • 75 Takımlar
  • 80 Ayarlar
  • 99 Ayırıcı

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

global $menu; 
print_r($menu); 

İyi anlarsam, hiçbir şey bizi istediğimiz gibi menüyü yeniden sipariş edemez:

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 iyi çalışıyor, bence bu yasal, yanılıyor muyum?


Sihirli sayılara dayanan çok hassas bir çözüm . Bir öğeyi diğerlerinin arasına yerleştiren başka bir eklenti eklenir / kaldırılır kaldırılmaz kırılır.
Walf


1

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, Post menüsünün yukarısına bir menü eklemek için 5. konumu kullanabilirsiniz.


Bu benim için işe yaramadı. Özel post-type.php dosyamın olduğu site çapında eklentime yerleştirdim
Daniel

1

İşte tüm mesele için uyarı ...

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 ayarlanmamış olmalıdır, aksi takdirde listenin en altına gider.


1

WordPress 5 ve önceki sürümlerde çalışan bir çözüm için, aşağıdaki kodla yeniden konumlandırın:

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

Bu, kutup konumu için birden fazla menü öğesinin olmadığını varsayar.


0

Bağladığınız aynı 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

Yani, böyle bir menu_positionşeye ayarlarsanız 4, mesajların üzerine koymalıdır.

Bir konum -1onu Dashboardbağlantının üzerine koyar .


4 denedim ama tam olarak 5 ile aynı.
janoChen

Hrm. 1-3 denediniz mi? Sanırım belki "1" (veya "0") Gösterge Tablosu. Belki 2-3 bir şey işe yarayacaktır
Zack

0 1 2 3 Gösterge Tablosundan önce ve 4 Mesajlar'dan önce. Gerçekten imkansız!
11:44

Vay. fazla WordPress kırdı? O zaman bilmiyorum. : - /
Zack

Sanırım 4, Mesajlar'ın hemen üstündeki ayırıcı ve 5, Mesajlar'dır, bu nedenle menü konumunuzu 3 olarak ayarlarsanız, ayırıcıdan hemen önce olacaktır. Elbette varsayılan yapılandırma ile. Eklenti sayfamı 4 olarak ayarlamak, ayırıcının üzerine yazdı, ancak Yayınların hemen üzerinde göründü. hmmm ...
goldenapples

0

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

Ardından, bunları Yayınlar'ın ve Gösterge Tablosu menü öğelerinin altına taşımak için bu kodu koymanız yeterlidir .

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 );
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.