WP Manifestindependent plugin directory
manifest / admin / wp-he-sorts

HE SORTS

워드프레스 메뉴 커스텀 플러그인

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/he-works/wp-he-sorts/archive/refs/heads/main.zip
Updates itself. It ships its own updater, so new versions appear under Dashboard → Updates.

WordPress 관리자 메뉴를 자유롭게 정렬·편집할 수 있는 플러그인


소개

HE SORTS는 WordPress 관리자 대시보드의 왼쪽 메뉴를 드래그 앤 드롭으로 자유롭게 재배치할 수 있는 플러그인입니다.
기본 메뉴 순서가 마음에 들지 않거나, 자주 쓰는 메뉴를 상단에 올리고 싶을 때 간편하게 사용할 수 있습니다.


주요 기능

  • 드래그 앤 드롭 정렬 — 1뎁스(상단 메뉴)부터 3뎁스(중첩 하위 메뉴)까지 자유롭게 순서 변경
  • 뎁스 이동 — 항목을 하위로 내리거나(들여쓰기), 상위로 올릴 수(내보내기) 있음
  • 메뉴 이름 변경 — 각 항목의 표시 이름을 원하는 대로 수정
  • 항목 숨기기 — 필요 없는 메뉴를 삭제하지 않고 숨김 처리
  • 커스텀 메뉴 추가 — URL, 아이콘, 권한, 링크 대상을 지정하여 새 메뉴 항목 추가
  • GitHub 자동 업데이트 — WordPress 플러그인 업데이트 창에서 바로 업데이트 가능

스크린샷

┌──────────────────────────────────────────────────────────┐
│ HE SORTS v1.0.0         [+ 항목 추가]  [초기화]  [저장] │
├─────────────────────────────┬────────────────────────────┤
│  메뉴 구조                   │  항목 속성                 │
│                             │                            │
│  ⠿ 🏠 대시보드          ›👁  │  표시 이름                 │
│    ⠿  홈               ›‹👁  │  [대시보드              ]  │
│    ⠿  업데이트         ›‹👁  │                            │
│  ⠿ ✏️  글               ›👁  │  ☐ 숨기기                 │
│    ⠿  모든 글          ›‹👁  │                            │
│      ⠿  카테고리       ›‹👁  │  [적용]  [삭제]           │
│      ⠿  태그           ›‹👁  │                            │
│  ...                        │                            │
└─────────────────────────────┴────────────────────────────┘

설치 방법

직접 업로드

  1. 이 저장소를 ZIP으로 다운로드합니다.
  2. WordPress 관리자 → 플러그인 → 새로 추가 → 플러그인 업로드에서 ZIP 파일을 선택합니다.
  3. 설치 후 활성화합니다.

FTP / 파일매니저

  1. plugin-HE-SORTS 폴더를 /wp-content/plugins/ 경로에 업로드합니다.
  2. WordPress 관리자 → 플러그인에서 HE SORTS를 활성화합니다.

사용 방법

  1. 플러그인 활성화 후 관리자 메뉴 맨 하단의 HE SORTS 항목을 클릭합니다.
  2. 또는 플러그인 목록에서 HE SORTS 옆의 설정 링크를 클릭합니다.

순서 변경

  • 항목 왼쪽의 ⠿ 핸들을 드래그하여 원하는 위치로 이동합니다.

뎁스 조정

버튼 기능
→ (들여쓰기) 앞 항목의 하위 메뉴로 이동 (최대 3뎁스)
← (내보내기) 한 단계 상위 레벨로 이동

이름 변경

  1. 변경할 항목을 클릭합니다.
  2. 우측 속성 패널에서 표시 이름을 수정합니다.
  3. 적용 버튼을 누른 후 저장합니다.

항목 숨기기

  • 항목 우측의 👁 버튼을 클릭하면 메뉴에서 숨겨집니다.
  • 다시 클릭하면 표시됩니다.

커스텀 메뉴 추가

  1. 상단 항목 추가 버튼을 클릭합니다.
  2. 이름, URL, 아이콘, 권한, 링크 대상을 입력합니다.
  3. 추가 버튼을 누르면 트리에 추가됩니다.
  4. 저장합니다.

초기화

  • 초기화 버튼을 누르면 모든 설정이 삭제되고 WordPress 기본 메뉴 순서로 복원됩니다.

요구 사항

항목 최소 버전
WordPress 5.0 이상
PHP 7.4 이상
브라우저 Chrome, Firefox, Safari, Edge 최신 버전

업데이트

플러그인은 GitHub 릴리즈를 통해 자동 업데이트를 지원합니다.
새 버전이 출시되면 WordPress 관리자 → 플러그인 페이지 또는 대시보드 → 업데이트 화면에서 바로 업데이트할 수 있습니다.


변경 이력

v1.0.16 (2026-07-03)

  • 버그 수정(치명적): 자동 업데이트(GitHub 릴리스 → "지금 업데이트") 진행 시 "Cannot redeclare he_sorts_init()" 치명적 오류로 플러그인이 자동 비활성화되던 문제 수정. GitHub 압축 해제 폴더명(예: wp-he-sorts-main)과 실제 설치 폴더명(예: plugin-HE-SORTS)이 달라, 워드프레스 코어가 새 파일을 기존 폴더로 옮긴 뒤에도 옛 압축 해제 폴더명을 기준으로 재활성화를 시도하면서 같은 파일이 두 경로에서 동시에 include 되던 것이 원인. after_install() 에서 $result['destination_name'] 도 함께 갱신하도록 수정, 파일 이동 실패 시에도 안전하게 오류를 반환하도록 개선

v1.0.15 (2026-07-03)

  • 버그 수정(핵심): 에디터 페이지 CSS 가 #wpwrap(워드프레스 좌측 관리자 메뉴 + 본문을 함께 감싸는 컨테이너)을 display:flex; flex-direction:column으로 바꾸던 문제 수정. 이로 인해 좌측 관리자 메뉴가 워드프레스 자체 위치 계산 스크립트와 충돌해 화면 맨 아래로 밀려나고, 편집 화면은 대부분 빈 여백으로 보이는 문제가 발생했음. #wpwrap/#wpcontent/#wpbody 는 더 이상 건드리지 않고, HE SORTS 자신의 래퍼(.he-sorts-wrap)에만 calc(100vh - 관리자바 높이) 로 높이를 직접 계산해 적용하도록 변경
  • 버그 수정: 에디터 화면에서 사용하던 SortableJS 를 외부 CDN(jsdelivr) 대신 플러그인 내장 파일(assets/js/vendor/sortable.min.js)로 변경 — 외부 스크립트 차단 환경에서도 안전하게 동작하도록 방어
  • 안정성: SortableJS 로드에 실패해도 나머지 버튼·입력 등 에디터 기능은 정상 동작하도록 초기화 로직 분리 (initSortable() 실패를 try/catch 로 격리)

v1.0.14 (2026-04-23)

  • 버그 수정: 1뎁스 항목(하위 메뉴 포함)을 2뎁스로 이동 후 다시 1뎁스로 꺼낼 때 하위 항목이 함께 따라오지 않고 기존 부모 아래에 남아있던 문제 수정 — recalculateParents() 를 "유효한 parentId 유지 + 이동한 항목만 DOM 재탐색" 하이브리드 방식으로 수정
  • 버그 수정: 초기화(reset) 후 에디터 메뉴 텍스트 옆에 </span> 문자가 출력되던 문제 수정 — strip_menu_badge() 를 중첩 <span> 처리가 가능한 strip_tags() 방식으로 변경

v1.0.13 (2026-04-23)

  • 버그 수정: 부모 항목 삭제 시 자식 항목이 고아로 남아 depth 가 강제 감소되던 문제 수정 — 삭제 시 하위 항목 전체(block)를 함께 제거하고 하위 항목 수를 confirm 메시지에 표시
  • UX 개선: 에디터 높이를 calc(100vh - 73px) 고정값 대신 flex-chain(#wpwrap → .wrap → .he-sorts-wrap → .he-sorts-body) 으로 계산 — WP 버전·테마별 관리자바 높이 차이 대응
  • UX 개선: WP 관리자바 실제 높이를 JS 로 읽어 --wp-admin-bar-h CSS 변수로 주입 — 헤더 sticky top 이 정확하게 적용됨

v1.0.12 (2026-04-23)

  • 버그 수정: recalculateParents() — 기존 parentId가 유효해 보여도 DOM 순서가 바뀐 경우 잘못된 부모를 유지하던 문제 수정 (항상 DOM 순서 기준으로 직전 depth-1 항목을 새로 탐색)
  • 버그 수정: 구분선(separator) 클릭 시 빈 속성 패널이 열리던 문제 수정 (구분선은 selectItem() 호출 차단)
  • 버그 수정: 2뎁스 커스텀 메뉴 추가 시 상위 항목이 선택되지 않은 상태에서 추가하면 parentId/depth 불일치 발생하던 문제 수정 (선택 없으면 자동으로 1뎁스로 전환 + 안내 메시지)
  • 버그 수정: PHP sanitize_config() 에서 wp_slug/parent_id 값이 null인 경우 isset(null) === true로 인해 sanitize_text_field(null)이 빈 문자열 ""을 반환하던 문제 수정 (명시적 null 체크로 변경)

v1.0.11 (2026-04-23)

  • 버그 수정: 드래그로 항목을 이동할 때 하위 메뉴가 따라오지 않던 문제 수정 (depth 변경 없는 이동 시에도 relocateDescendants 항상 호출)
  • 버그 수정: 1뎁스 항목을 2뎁스로 이동 시 하위 메뉴가 전부 열려 보이고 토글 화살표가 작동하지 않던 문제 수정 (depth≠1 항목의 잔존 토글 버튼 제거, collapsedState 정리 추가)
  • 버그 수정: duplicate_page_settings 등 원래 1뎁스였던 메뉴를 2뎁스로 이동 시 권한 오류 수정 ($_parent_pages 업데이트 + 훅 위임 패치를 depth 2·3 전체로 확장)
  • 버그 수정: googlesitekit-settings 등 3뎁스 메뉴 빈 화면 문제 추가 개선 (patch_registered_pages로 통합, $_parent_pages 올바르게 업데이트)

v1.0.10 (2026-04-23)

  • 버그 수정: 3뎁스 메뉴 접근 시 권한 오류 수정 — $_registered_pages 훅 이름 불일치 패치 (patch_depth3_registered_pages())
  • 버그 수정: 항목을 다른 메뉴 하위로 이동 시 하위 메뉴가 자동으로 펼쳐지던 문제 수정 (모든 드래그 후 자동 접힘 적용)
  • UX 개선: 하위 메뉴가 있는 항목은 3뎁스로 이동 불가 (드래그·들여쓰기 모두 차단)
  • UX 개선: ▲/▼ 이동 버튼 위치를 드래그 핸들 우측(아이콘 좌측)으로 이동 — 펼치기/접기 화살표와 구분
  • UX 개선: 드래그 핸들 아이콘을 ≡ (hamburger) 스타일로 변경

v1.0.9 (2026-04-23)

  • 버그 수정: admin.php?page=hbu-gdrive 등 플러그인 페이지 접근 시 권한 오류 수정 (PHP URL 정규화 제거 → 클라이언트 JS 에서 처리)
  • 버그 수정: 커스텀 메뉴(HE SORTS 추가 메뉴) 클릭 시 WP 관리자 사이드바에서 하위 메뉴가 펼쳐지지 않던 문제 수정 (he-sorts-menu.js 아코디언 열림 처리 추가)
  • 신규 기능: 항목 우측에 ▲/▼ 버튼 추가 — 드래그 없이 한 칸씩 위/아래로 이동 가능 (같은 뎁스·같은 부모 내에서만 이동)
  • UX 개선: 저장·항목 추가·구분선·초기화 버튼을 상단 헤더 우측으로 이동 (이전 사이드바 컬럼 제거, 화면 공간 확보)
  • UX 개선: 항목을 다른 뎁스로 이동(드래그, 들여쓰기/내보내기)하면 하위 메뉴를 자동 접힘 처리 (기존에는 이동 후 하위 메뉴가 전부 펼쳐졌음)

v1.0.8 (2026-04-23)

  • 버그 수정: 2뎁스·3뎁스로 이동한 메뉴 클릭 시 프론트 404 에러 수정 (서브메뉴 URL admin.php?page= 정규화)
  • UX 개선: 드래그 시 접혀있는 하위 메뉴가 강제로 펼쳐지던 현상 수정 (수동으로 펼친 상태만 유지)

v1.0.7 (2026-04-23)

  • 버그 수정: 커스텀 메뉴 항목의 target="_blank" 설정이 실제 관리자 메뉴에 반영되지 않던 문제 수정 (admin_head JS 주입)
  • 버그 수정: 구분선 slug가 WordPress 기본 구분선과 충돌할 수 있던 문제 수정 (separator-he-sorts-* 형식으로 변경)
  • 보안 강화: 커스텀 메뉴 아이콘 필드에 이미지 URL 입력 시 올바르게 처리되도록 sanitization 개선
  • 안정성: 드래그 depth 추적을 document.mousemove 대신 SortableJS onMove 콜백으로 교체 (Firefox 호환성)
  • 안정성: he_sorts_dfs() 순환 참조 방지 로직 추가
  • 자동 업데이트 수정: after_install() 파일시스템 초기화 개선 및 같은 경로 이동 시 파일 삭제 버그 수정

v1.0.6 (2026-04-22)

  • 버그 수정: find_sub_entry() — 서브메뉴 항목을 다른 상위 메뉴로 이동한 경우 원본 부모에 없으면 전체 $sub_index를 순회해 항목을 찾도록 수정
  • 버그 수정: collect_children() 주석 및 로직 명확화 — WordPress $submenu가 최상위 slug 하나의 키만 지원하므로 depth-3 항목도 동일한 $sub_key 아래에 추가되도록 명시
  • 버그 수정: after_install() — $wp_filesystem이 null인 경우 WP_Error를 반환하도록 안전 처리 추가
  • 버그 수정: serializeList() (JS) — wp_slug, parent_id가 빈 문자열일 때 null로 직렬화하도록 수정
  • 버그 수정: relocateDescendants() (JS) — 드래그 후 손자(depth-3) 항목의 DOM 순서가 뒤섞이던 문제 수정
  • 버그 수정: he-sorts-menu.css — PHP에서 부여하는 커스텀 메뉴 클래스(he-sorts-custom)와 CSS 선택자 불일치 수정
  • 버그 수정: README.md 버전 뱃지를 실제 버전에 맞게 수정

v1.0.5

  • 이전 버전

라이선스

GNU General Public License v2.0


제작

HE WORKS.
https://github.com/he-works