Щойно я з’ясував параметр menu_position, здається, ви можете розмістити меню свого спеціального типу публікації майже скрізь. За винятком меню "Повідомлення"!
Як я можу це досягти?
Щойно я з’ясував параметр menu_position, здається, ви можете розмістити меню свого спеціального типу публікації майже скрізь. За винятком меню "Повідомлення"!
Як я можу це досягти?
Відповіді:
Позиції для основних елементів меню
Опис параметра для "позиції меню"
$position
( ціле число ) ( необов’язково ) Позиція в порядку меню цього меню має відображатися. За замовчуванням, якщо цей параметр опущено, меню з’явиться внизу структури меню. Чим більша цифра, тим менша її позиція в меню.ПОПЕРЕДЖЕННЯ: якщо два пункти меню використовують один і той же атрибут позиції, один із елементів може бути перезаписаний так, що відображається лише один елемент! Ризик конфлікту можна зменшити, використовуючи десяткові замість цілих значень, наприклад 63,3 замість 63.
За замовчуванням: внизу структури меню
Новий плагін JetPack розміщує своє посилання на меню безпосередньо під посиланням на панелі інструментів. Це робиться, встановивши порядок меню 0, фільтруючи масив $ menu_order :
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');
Для мене це добре працює, я думаю, це законно, я помиляюся?
Це помилка в WordPress. Будь ласка, дивіться цю тему в 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');
Тепер ви можете скористатись позицією 5, щоб додати меню над меню "Публікація".
ось застереження до всього питання ...
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;
ПОВІДОМЛЕННЯ: повинно бути цілим числом і НЕ встановлено, інакше воно переходить у нижню частину списку.
Для робочого рішення в WordPress 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).
Потім, просто помістіть цей код , щоб перемістити їх вище повідомлення і нижче Dashboard пунктів меню.
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 );