답변:
원하는 것을 얻을 수있는 빠르고 더러운 방법이 있습니다.
WordPress는이라는 전역 배열에 관리 메뉴 섹션을 저장합니다 $menu
. 구분 기호를 추가 $menu
하려면 분리하려는 옵션의 인덱스 사이에있는 인덱스를 사용 하여 배열에 요소를 추가합니다 .
add_admin_menu_separator()
기능 사용그래서 나는 이것에 대한 논리를 캡슐화하는 함수를 작성했다 add_admin_menu_separator()
. 당신은 옵션보다 높은 배열 인덱스 번호를 선택해야합니다 , 그 후에 당신은 구분 기호를 추가 할을 한 다음 함수 호출 add_admin_menu_separator()
을 통과하여 매개 변수로 인덱스를 말했다.
예를 들면 다음과 같습니다.
add_admin_menu_separator(37);
add_admin_menu_separator()
함수 자체add_admin_menu_separator()
테마 functions.php
파일에 복사 할 수 있는 함수의 정의는 다음과 같습니다 . 그렇습니다. 비슷하지만 전역 $menu
배열 을 만들고 사용하는 코드도 마찬가지입니다 . (계획은 결국 고맙게도 폐기 할 것이지만 아마도 몇 년이 걸릴 것이다.)
function add_admin_menu_separator($position) {
global $menu;
$index = 0;
foreach($menu as $offset => $section) {
if (substr($section[2],0,9)=='separator')
$index++;
if ($offset>=$position) {
$menu[$position] = array('','read',"separator{$index}",'','wp-menu-separator');
break;
}
}
ksort( $menu );
}
$menu
필요한 인덱스 찾기당신이 할 수있는 필요한 인덱스 번호를 알아낼 var_dump()
의를 $GLOBALS['menu']
내에서 admin_init
후크. 다음은 테마 functions.php
파일에 일시적으로 드롭 하여 값이 무엇인지 확인할 수있는 약간의 코드 입니다. 이것은 URL로 시작할 때만 작동합니다 /wp-admin/
(그러나 기본 테마 편집기가 아닌 FTP로 수행해야합니다. 그렇지 않으면 최소한 테마 functions.php
파일에 대한 FTP 액세스가 가능할 때까지 사이트에 대한 액세스가 느슨해집니다 !) :
add_action('admin_init','dump_admin_menu');
function dump_admin_menu() {
if (is_admin()) {
header('Content-Type:text/plain');
var_dump($GLOBALS['menu']);
exit;
}
}
BTW에서이 링크는 일반적으로 관리자 메뉴 작업에 유용합니다.
내 관리자 메뉴 클래스는 현재 구분 기호를 쉽게 추가 할 수있는 방법을 제공하지 않지만 시간이 있으면 추가 할 것이라고 생각합니다.
다음과 같이 쉽습니다.
add_action( 'admin_init', 'add_sep' );
function add_sep() {
if ( ! is_admin() )
return false;
global $menu;
$sep = $menu[4]; // that's the default separator
$pos = 6; // change it for the desired position
$menu = array_merge(
array_slice( $menu, 0, $pos ),
array( $sep ),
array_slice( $menu, $pos + 1, -1)
);
$menu[ $pos - 1 ][4] .= ' menu-top-last';
$menu[ $pos + 1 ][4] .= ' menu-top-first';
}
참고 : 기본 분리 자 위치 ( $menu[4]
)는이 후크 이전에 수행 한 구성 (또는 플러그인)에 따라 다를 수 있습니다.
물론 menu-top-first
및 menu-top-last
클래스 내성을 조정할 수도 있습니다 .
구분 기호가 추가되지 않는 문제가 있었지만, 워드 프레스가 중복 구분 기호를 제거하는 방식 때문이었습니다. ksort($menu);
함수의 맨 아래에 추가 하면 문제가 해결되었습니다.
이것은 MastaBaba의 답변을 기반으로하지만 지정한 위치의 아무것도 대체하지 않습니다. 나중에 구분 기호를 추가합니다.
또한 익명 함수를 사용하므로 PHP 버전 5.3 이상과 만 호환됩니다.
add_action( 'admin_menu', function () {
$position = 29;
global $menu;
$separator = [
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
];
if (isset($menu[$position])) {
$menu = array_splice($menu, $position, 0, $separator);
} else {
$menu[$position] = $separator;
}
});
수행하려는 작업을 결정하는 것은 약간 어렵지만 WordPress 관리 메뉴에 최상위 항목을 추가하려고한다고 생각합니다.
WordPress Codex 에서이 설명서 를 참조하십시오 .
요컨대, add_menu_page()
많은 인수를 취하고 "대시 보드", "게시물", "미디어"등의 형제로 관리 메뉴에 추가 항목을 표시하는 함수 사용법을 찾고 있습니다 .
내가 올바르게 이해했으면 좋겠다. :-)
add_menu_page()
.
아래는 관리 메뉴가 렌더링 될 때 실행되는 Wordpress에 대한 작업을 광고합니다. 관리자 메뉴는 배열이며 여기에서 지정한 위치에 구분 기호를 정의하는 배열 요소를 추가하기 만하면됩니다.
에서 여기 :
add_action( 'admin_menu', 'set_admin_menu_separator' );
function set_admin_menu_separator() {
$position = 79;
global $menu;
$menu[$position] = array(
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
);
}
이것은 현재 승인 된 답변과 비슷하지만 현재 승인 된 답변은 나에게 도움이되지 않았습니다 (댓글로 판단하여 여러 다른 사람들에게).