15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
23.10.2024

Menu WordPress: Panduan Teknis Lengkap untuk Arsitektur Navigasi

Menu WordPress adalah kumpulan tautan navigasi terstruktur — dirender sebagai elemen HTML <nav> — yang menghubungkan pengunjung ke halaman, postingan, kategori, URL kustom, atau taksonomi di seluruh situs Anda. Menu ini didaftarkan oleh tema menggunakan register_nav_menus() dan dikelola melalui antarmuka admin WordPress atau Customizer, memberikan pemilik situs kendali penuh atas hierarki navigasi tanpa menyentuh kode.

Untuk sebagian besar instalasi WordPress, menu adalah sistem navigasi utama. Mengelolanya dengan benar tidak hanya memengaruhi pengalaman pengguna, tetapi juga efisiensi perayapan, distribusi ekuitas tautan internal, dan cara mesin pencari menginterpretasikan hierarki konten situs Anda.

Cara Kerja Menu WordPress di Balik Layar

Sebelum menyentuh panel admin, ada baiknya memahami arsitekturnya. Menu WordPress beroperasi melalui tiga lapisan yang saling terhubung:

  • Registrasi tema: Sebuah tema mendeklarasikan lokasi menu yang tersedia menggunakan register_nav_menus() di dalam functions.php. Tanpa pemanggilan ini, layar admin Menu tidak menampilkan lokasi yang dapat ditetapkan.
  • Penyimpanan database: Item menu disimpan sebagai tipe postingan kustom (nav_menu_item) di wp_posts, dengan hubungan yang dikelola melalui wp_term_relationships. Setiap item membawa metadata seperti URL, label, ID induk, dan posisi.
  • Rendering template: Tema memanggil wp_nav_menu() di file templatenya, dengan meneruskan argumen theme_location. WordPress menyelesaikan menu yang ditetapkan, membangun pohon item, dan menghasilkan HTML semantik.

Memahami hal ini berarti Anda tahu persis di mana harus mencari ketika ada yang tidak berfungsi — pemanggilan wp_nav_menu() yang hilang di template, tema yang tidak pernah mendaftarkan lokasi, atau hubungan term yang rusak di database.

Langkah 1: Akses Manajer Menu WordPress

Masuk ke dasbor WordPress Anda dan navigasikan ke Appearance > Menus. Layar ini adalah panel kontrol utama untuk semua operasi menu.

Jika Anda tidak melihat menu Appearance di bilah sisi, peran pengguna Anda kemungkinan tidak memiliki kemampuan edit_theme_options. Akun administrator diperlukan.

Jalur alternatif melalui Customizer:

Buka Appearance > Customize > Menus. Rute ini menyediakan panel pratinjau langsung di samping editor, yang berguna untuk penempatan visual tetapi menawarkan lebih sedikit opsi pengeditan massal dibandingkan layar Menu khusus.

Langkah 2: Buat Menu Baru

Di layar Menu, klik tautan “Create a new menu” di bagian atas halaman.

  1. Masukkan nama internal yang deskriptif — misalnya, Primary Navigation, Footer Legal Links, atau Mobile Sidebar. Nama ini tidak pernah ditampilkan kepada pengunjung; nama ini hanya ada sebagai referensi Anda saat mengelola beberapa menu.
  2. Klik Create Menu.

Praktik terbaik adalah memberi nama menu berdasarkan fungsi dan lokasinya daripada label umum seperti “Menu 1.” Ketika sebuah situs berkembang menjadi lima atau enam menu, penamaan yang jelas mencegah kesalahan penetapan yang merugikan.

Langkah 3: Tambahkan Item ke Menu Anda

Panel di sisi kiri layar Menu menampilkan semua tipe konten yang tersedia yang dapat Anda tambahkan sebagai item menu.

Halaman

Centang kotak di sebelah halaman yang ada (misalnya, Home, About, Services, Contact) dan klik Add to Menu. Secara default, WordPress hanya menampilkan halaman terbaru. Klik View All untuk melihat daftar lengkap, atau gunakan tab Search untuk menemukan halaman tertentu berdasarkan judul.

Postingan dan Tipe Postingan Kustom

Postingan individual dapat ditambahkan dengan cara yang sama. Jika tema atau plugin Anda mendaftarkan tipe postingan kustom (misalnya, portfolio, product), tipe postingan tersebut muncul sebagai panel terpisah — asalkan didaftarkan dengan show_in_nav_menus => true.

Kategori dan Tag

Term taksonomi adalah item menu yang powerful untuk situs dengan konten yang banyak. Menambahkan tautan kategori mengarahkan pengunjung ke halaman arsip untuk kategori tersebut, menampilkan semua postingan terkait secara otomatis. Ini sangat efektif untuk situs berita atau blog multi-topik di mana konten diorganisir berdasarkan subjek.

Tautan Kustom

Tautan kustom menerima URL apa pun — internal atau eksternal — yang dipasangkan dengan teks tautan pilihan Anda. Kasus penggunaan meliputi:

  • Menautkan ke subdomain atau alat eksternal
  • Membuat item induk placeholder (gunakan # sebagai URL) yang berfungsi sebagai pemicu dropdown tanpa tujuan sendiri
  • Menautkan ke target anchor dalam sebuah halaman (misalnya, https://example.com/about/#team)

Untuk menambahkan tautan kustom:

  1. Perluas panel Custom Links.
  2. Masukkan URL lengkap di kolom URL.
  3. Masukkan label yang terlihat di kolom Link Text.
  4. Klik Add to Menu.

Langkah 4: Atur Struktur dan Hierarki Menu

Setelah item muncul di pembuat menu di sisi kanan, Anda mengontrol urutan dan hierarki melalui drag-and-drop.

Mengurutkan Ulang Item

Klik dan tahan item menu mana pun, lalu seret ke atas atau ke bawah untuk mengubah posisinya. Item paling kiri dirender pertama di bilah navigasi horizontal.

Membuat Submenu (Navigasi Dropdown)

Seret item menu sedikit ke kanan dan di bawah item lain. Indentasi visual muncul, menunjukkan hubungan induk-anak. Item yang diindentasi menjadi entri submenu yang muncul dalam dropdown di bawah induknya.

Anda dapat membuat beberapa level bertingkat, meskipun sebagian besar tema hanya menata dua atau tiga level. Di luar itu, dukungan CSS dan JavaScript bervariasi dan UX menurun pada perangkat mobile.

Mengedit Item Menu Individual

Klik panah di sisi kanan item menu mana pun untuk memperluas pengaturannya:

  • Navigation Label: Teks yang ditampilkan dalam menu yang dirender (terlepas dari judul halaman).
  • Title Attribute: Mengisi atribut HTML title pada tag anchor — berguna untuk aksesibilitas tetapi sering kali redundan jika labelnya sudah deskriptif.
  • Open link in a new tab: Menambahkan target="_blank" dan, yang penting, WordPress secara otomatis menambahkan rel="noopener noreferrer" untuk mencegah reverse tabjacking.
  • CSS Classes: Tambahkan kelas kustom ke item individual untuk penggayaan yang ditargetkan.
  • Link Relationship (XFN): Jarang digunakan dalam alur kerja modern; memungkinkan Anda mendefinisikan hubungan antara Anda dan target tautan menggunakan microformat XFN.
  • Description: Beberapa tema menampilkan deskripsi singkat di bawah label menu. Sebagian besar tidak.

Catatan: Kolom CSS Classes dan Description disembunyikan secara default. Untuk menampilkannya, klik Screen Options di kanan atas halaman Menu dan aktifkan kotak centang yang sesuai.

Langkah 5: Tetapkan Menu ke Lokasi Tema

Membuat menu tidak membuatnya muncul di situs Anda. Anda harus menetapkannya ke lokasi tema yang terdaftar.

Gulir ke Menu Settings di bagian bawah pembuat menu dan centang kotak di sebelah lokasi yang diinginkan — biasanya berlabel Primary Menu, Secondary Menu, Footer Menu, atau Social Links Menu, tergantung pada apa yang didaftarkan tema aktif Anda.

Klik Save Menu.

Jika lokasi tema yang Anda harapkan tidak ada, tema tersebut belum mendaftarkannya. Anda dapat memverifikasi lokasi yang terdaftar secara programatik:

print_r( get_registered_nav_menus() );

Jalankan ini di file template sementara atau melalui plugin seperti Query Monitor untuk memeriksa lokasi yang tersedia.

Menetapkan Menu melalui Customizer

Navigasikan ke Appearance > Customize > Menus > View All Locations. Setiap lokasi yang terdaftar memiliki dropdown di mana Anda memilih menu mana yang akan ditampilkan. Perubahan di sini dipratinjau secara langsung sebelum dipublikasikan.

Langkah 6: Kustomisasi Menu Lanjutan

Menambahkan Ikon ke Item Menu

Sebagian besar tema tidak mendukung ikon di item menu secara native. Pendekatan umum adalah:

  • Pseudo-elemen CSS: Tambahkan kelas ke item menu dan gunakan ::before atau ::after di stylesheet Anda untuk menyisipkan ikon dari library seperti Font Awesome.
  • Navigation Label dengan HTML: Beberapa tema mengizinkan HTML di kolom Navigation Label. Anda dapat menyisipkan tag <i> atau <svg> secara langsung, meskipun ini rapuh dan rusak jika tema membersihkan label.
  • Pemilih ikon berbasis plugin: Plugin seperti Max Mega Menu atau WP Menu Icons menambahkan pemilih ikon langsung ke editor item menu.

Mega Menu

Untuk situs besar dengan hierarki konten yang dalam, dropdown standar menjadi tidak praktis. Mega menu menampilkan panel lebar multi-kolom alih-alih daftar vertikal yang sempit. Implementasinya memerlukan plugin khusus atau tema yang mendukung pola ini secara native. Struktur menu di WordPress tetap sama — perbedaannya sepenuhnya ada pada cara CSS dan JavaScript tema merender item bertingkat.

Semua tema modern menciutkan navigasi horizontal menjadi toggle hamburger pada viewport kecil. Perilaku ini ditangani oleh JavaScript dan CSS tema, bukan oleh inti WordPress. Jika menu mobile tema Anda rusak atau tidak dapat diakses, masalahnya hampir selalu ada di file navigation.js tema atau atribut ARIA yang hilang pada tombol toggle.

Untuk kepatuhan aksesibilitas (WCAG 2.1 AA), tombol toggle harus memiliki:

  • Atribut aria-expanded yang diubah antara true dan false saat diklik
  • Atribut aria-controls yang menunjuk ke ID kontainer menu
  • Indikator fokus yang terlihat

Langkah 7: Menu di Area Widget

Anda dapat menampilkan menu yang tersimpan di dalam sidebar, area widget footer, atau zona berwidget lainnya.

Untuk widget klasik (sebelum WordPress 5.8):

  1. Buka Appearance > Widgets.
  2. Seret widget Navigation Menu ke area widget yang diinginkan.
  3. Pilih menu dari dropdown dan simpan.

Untuk layar widget Block Editor (WordPress 5.8+):

  1. Buka Appearance > Widgets.
  2. Klik ikon + untuk menambahkan blok.
  3. Cari dan sisipkan blok Navigation atau blok Custom HTML.
  4. Blok Navigation dapat mereferensikan menu yang ada berdasarkan nama.

Untuk tema Full Site Editing (FSE):

Dalam tema berbasis blok, menu tradisional digantikan oleh blok Navigation di dalam Site Editor (Appearance > Editor). Blok Navigation mengambil dari data menu yang sama tetapi dikelola sepenuhnya dalam antarmuka editor blok. Layar klasik Appearance > Menus mungkin tidak muncul sama sekali di tema FSE.

Tipe Menu WordPress: Perbandingan

Tipe MenuLokasiKasus Penggunaan TerbaikPerilaku MobileMemerlukan Plugin
Navigasi UtamaHeaderBagian utama situsHamburger collapseTidak
Menu FooterFooterTautan hukum, sekunderTetap diperluasTidak
Menu SidebarArea widgetNavigasi kategori, filterAccordion yang dapat diciutkanTidak
Menu Tautan SosialHeader/FooterIkon profil sosialIkon inlineTidak
Mega MenuHeaderKatalog besar, situs enterprisePanel mobile kustomBiasanya ya
Navigasi BreadcrumbArea kontenHierarki dalam, e-commerceTeks inlineBiasanya ya

Mengelola Beberapa Menu

WordPress mendukung jumlah menu yang tersimpan tanpa batas, tetapi hanya satu menu yang dapat ditetapkan ke setiap lokasi tema pada satu waktu. Arsitektur multi-menu praktis untuk situs bisnis tipikal:

  • Primary Menu: Halaman layanan dan konten tingkat atas
  • Footer Menu (Kolom 1): Halaman perusahaan dan hukum
  • Footer Menu (Kolom 2): Tautan dukungan dan sumber daya
  • Mobile Menu: Versi menu utama yang disederhanakan dengan lebih sedikit item untuk navigasi ibu jari yang lebih cepat
  • Dashboard/Account Menu: Relevan hanya jika situs memiliki area pengguna yang masuk

Untuk beralih antara menu di layar Menu, gunakan dropdown Select a menu to edit di bagian atas dan klik Select.

Manajemen Menu Secara Programatik

Bagi pengembang yang mengelola WordPress dalam skala besar — terutama di VPS Hosting atau Dedicated Server di mana deployment menggunakan skrip — membuat dan menetapkan menu secara programatik jauh lebih andal daripada klik admin manual.

Buat menu dan tetapkan ke lokasi:

// Create the menu
$menu_id = wp_create_nav_menu( 'Primary Navigation' );

// Add a page item
wp_update_nav_menu_item( $menu_id, 0, array(
    'menu-item-title'   => 'Home',
    'menu-item-url'     => home_url( '/' ),
    'menu-item-status'  => 'publish',
    'menu-item-type'    => 'custom',
) );

// Assign to a theme location
$locations = get_theme_mod( 'nav_menu_locations' );
$locations['primary'] = $menu_id;
set_theme_mod( 'nav_menu_locations', $locations );

Ekspor dan impor menu antar lingkungan menggunakan WP-CLI:

# Export the full site (includes menu data in the WXR file)
wp export --path=/var/www/html --dir=/tmp/exports

# On the target server, import
wp import /tmp/exports/site.xml --authors=create

WP-CLI juga memungkinkan Anda memeriksa penetapan menu secara langsung:

wp menu list
wp menu location list
wp menu location assign primary my-menu-slug

Ini sangat berharga saat memigrasikan instalasi WordPress antara lingkungan staging dan produksi di VPS dengan cPanel atau server Linux bare.

Masalah Menu Umum dan Cara Memperbaikinya

  • Menu dibuat tetapi tidak ditetapkan ke lokasi tema. Buka Appearance > Menus > Menu Settings dan centang kotak lokasi.
  • File template tema tidak memanggil wp_nav_menu() untuk lokasi tersebut. Periksa header.php tema atau bagian template yang relevan.
  • Plugin caching menyajikan halaman yang sudah usang. Bersihkan cache setelah menyimpan menu.

Item Menu Menampilkan URL yang Salah

  • URL situs berubah (misalnya, setelah migrasi dari HTTP ke HTTPS atau pindah ke domain baru). Item tautan kustom menyimpan URL absolut dan harus diperbarui secara manual atau melalui pencarian-penggantian database:
wp search-replace 'http://olddomain.com' 'https://newdomain.com' --path=/var/www/html
  • JavaScript tema untuk event hover atau klik tidak dimuat. Periksa konsol browser untuk error JS.
  • Aturan CSS menyembunyikan kontainer submenu. Periksa elemen dan cari display: none tanpa status hover/fokus yang sesuai.
  • Item menu bersarang dengan benar di admin tetapi tema hanya mendukung satu level kedalaman.
  • Menu disimpan di database, tetapi lokasi tema berubah antar tema. Setelah beralih, buka Appearance > Menus dan tetapkan ulang menu Anda ke lokasi tema baru.

Pertimbangan Keamanan untuk Navigasi WordPress

Item menu yang menautkan ke URL yang dibuat pengguna atau dikonstruksi secara dinamis harus diperlakukan dengan pengawasan yang sama seperti input lainnya. Risiko spesifik:

  • Open redirect melalui tautan kustom: Jika situs Anda secara programatik membangun URL item menu dari parameter kueri, validasi dan sanitasi inputnya. Fungsi esc_url() WordPress harus membungkus setiap output URL.
  • Eskalasi hak istimewa melalui visibilitas menu: Beberapa plugin menawarkan aturan “visibilitas menu” (tampilkan item ini hanya kepada pengguna yang masuk, administrator, dll.). Pastikan aturan ini diterapkan di sisi server, bukan hanya disembunyikan melalui CSS — menyembunyikan tautan di DOM tidak membatasi akses ke halaman target.
  • XSS di Navigation Labels: WordPress membersihkan label menu saat output, tetapi implementasi wp_nav_menu() kustom dengan item_spacing => 'discard' atau kelas walker kustom mungkin melewati escaping default. Selalu gunakan esc_html() atau esc_attr() di walker kustom.

Menjaga instalasi WordPress, tema, dan plugin Anda tetap diperbarui adalah pertahanan dasar. Jika Anda menjalankan WordPress di paket Shared Web Hosting, konfirmasikan bahwa host Anda menerapkan aturan WAF tingkat server yang menangkap pola injeksi umum yang menargetkan antarmuka admin.

SSL dan Integritas URL Menu

Jika situs Anda beroperasi di bawah HTTPS — yang harus dilakukan, mengingat Google memperlakukan HTTP sebagai sinyal peringkat — semua URL item menu harus menggunakan skema https://. Peringatan konten campuran yang dipicu oleh satu tautan http:// dalam menu dapat menekan indikator gembok aman browser dan mengikis kepercayaan pengunjung.

Verifikasi konfigurasi SSL Anda sudah benar dan bahwa Sertifikat SSL Anda mencakup semua subdomain yang direferensikan dalam item menu Anda, terutama jika Anda menautkan ke subdomain seperti shop.example.com atau docs.example.com.

Setelah menginstal atau memperbarui sertifikat SSL, jalankan audit menu lengkap:

wp menu item list --menu=primary --fields=url --format=csv | grep "^http://"

Setiap hasil dari perintah tersebut adalah item menu yang perlu diperbarui ke HTTPS.

Poin Teknis Utama

  • Daftarkan lokasi menu di functions.php dengan register_nav_menus() sebelum mengharapkannya muncul di admin.
  • Tetapkan menu ke lokasi — membuat menu tanpa menetapkannya tidak merender apa pun di frontend.
  • Gunakan Screen Options untuk membuka kunci kolom CSS Classes, Description, dan Link Relationship di editor item menu.
  • Di tema Full Site Editing, kelola navigasi melalui blok Navigation di Site Editor, bukan layar Menu klasik.
  • Gunakan perintah WP-CLI wp menu untuk deployment terskrip, migrasi, dan pembaruan massal di beberapa lingkungan.
  • Setelah migrasi domain atau pergantian HTTP ke HTTPS, jalankan pencarian-penggantian pada URL item menu — tautan kustom menyimpan jalur absolut.
  • Validasi aksesibilitas menu mobile: aria-expanded, aria-controls, dan manajemen fokus keyboard tidak opsional untuk kepatuhan.
  • Invalidasi cache wajib dilakukan setelah setiap penyimpanan menu di lingkungan produksi yang menjalankan caching objek atau halaman.
  • Kelas walker kustom di wp_nav_menu() melewati escaping default — selalu terapkan esc_html() dan esc_url() secara eksplisit.
  • Untuk pengaturan WordPress multi-lingkungan di VPS Control Panel, gunakan ekspor WP-CLI untuk mentransfer konfigurasi menu secara andal daripada membuatnya ulang secara manual.

FAQ

Bisakah saya memiliki menu berbeda untuk mobile dan desktop di situs WordPress yang sama?

Tidak secara native melalui sistem menu WordPress saja. Pendekatan standar adalah mendaftarkan dua lokasi tema — satu untuk desktop, satu untuk mobile — menetapkan menu berbeda ke masing-masing, dan menggunakan media query CSS untuk menampilkan atau menyembunyikan lokasi yang sesuai. Beberapa plugin mega menu menangani ini secara otomatis dengan panel konfigurasi responsif bawaan.

Mengapa menu saya menampilkan halaman yang tidak saya tambahkan?

Jika Anda mencentang opsi Automatically add new top-level pages to this menu saat pembuatan menu, WordPress menyisipkan setiap halaman tingkat atas yang baru diterbitkan ke dalam menu. Hapus centang opsi ini di bawah Menu Settings dan simpan untuk menghentikan perilaku tersebut.

Apa perbedaan antara lokasi menu dan menu?

Lokasi menu adalah slot yang didefinisikan oleh tema (misalnya, “Primary Menu”). Menu adalah kumpulan tautan aktual yang Anda buat di admin. Anda menetapkan menu ke lokasi. Satu menu dapat ditetapkan ke beberapa lokasi; satu lokasi hanya dapat menampung satu menu pada satu waktu.

Bagaimana cara menambahkan menu WordPress ke halaman menggunakan shortcode atau blok?

Inti WordPress tidak menyediakan shortcode native untuk menu. Metode paling bersih di editor blok adalah menyisipkan blok Navigation dan memilih menu yang tersimpan. Alternatifnya, gunakan fungsi wp_nav_menu() di blok Custom HTML dengan eksekusi PHP yang diaktifkan melalui plugin, atau gunakan plugin shortcode yang membungkus wp_nav_menu().

Apakah struktur menu memengaruhi SEO?

Ya, secara tidak langsung tetapi bermakna. Tautan menu dirayapi oleh Googlebot dan meneruskan ekuitas tautan internal ke targetnya. Halaman yang ditautkan dari navigasi utama biasanya menerima prioritas perayapan yang lebih tinggi dan sinyal PageRank internal yang lebih kuat. Mengubur halaman penting di balik beberapa level submenu mengurangi ekuitas tautan efektifnya. Pertahankan halaman terpenting Anda dalam satu atau dua klik dari beranda melalui menu utama.

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai