Saya sedang mengembangkan tema anak-anak menggunakan Wordpress 3.4.2 dan versi pengembangan dari Framework Pilihan oleh David Price . Ini adalah tema pertama saya dan saya relatif baru dalam hal ini, jadi saya telah melihat ke dalam Codex Wordpress dan memeriksa mendaftarkan item ke dalam API.
Tanpa merusak file eksternal di luar tema saya, saya bertanya-tanya apakah ada cara untuk mengatur ulang di mana halaman Opsi Tema terletak di dalam hierarki menu Penampilan - jadi ketika tema saya diaktifkan, posisinya tidak seperti gambar pertama tetapi seperti yang kedua.
Saya tahu Anda dapat membuat menu (seperti tab Penampilan , Plugin , Pengguna , dll.) Atau submenu ( Tema , Widget , Menu , dll.), Tetapi bagaimana cara mengatur sub-menu, katakan, kedua dari atas?
Dari apa yang saya kumpulkan, di suatu tempat ada pesanan yang dipanggil dan halaman tambahan lainnya dalam functions.php
file ditempatkan setelah itu?
Dalam file functions.php saya:
// Add our "Theme Options" page to the Wordpress API admin menu.
if ( !function_exists( 'optionsframework_init' ) ) {
define( 'OPTIONS_FRAMEWORK_DIRECTORY', get_template_directory_uri() . '/inc/' );
require_once dirname( __FILE__ ) . '/inc/options-framework.php';
}
Terima kasih.
sumber
Warning: Invalid argument supplied for foreach() in /wp-content/themes/mythemename/functions.php on line 1444
Baris 1444:foreach ($submenu[$menus] as $index => $value){
danWarning: ksort() expects parameter 1 to be array, null given in /wp-content/themes/mythemename/functions.php on line 1468
Jalur 1468:ksort($submenu[$menus]);
Jawaban:
Ini sebuah contoh;
Pertama-tama untuk mengetahui urutan item sub-menu berdasarkan pada kunci arraynya, Anda dapat melakukan
var_dump
pada variabel global $ submenu yang akan menampilkan yang berikut;(Saya menggunakan menu Posting dan sub menu sebagai contoh)
Kita dapat melihat bahwa item sub menu saya ditambahkan ke dalam array dengan kunci 17 setelah item default.
Jika misalnya saya ingin menambahkan item sub-menu saya, langsung setelah item sub-menu Semua Posting saya perlu melakukannya dengan mengatur kunci array saya ke masing-masing 6, 7, 8 atau 9 (apa pun setelah 5 dan sebelum 10 masing-masing.
Ini adalah bagaimana kamu melakukannya ...
Hasil,
... cobalah dan beri tahu kami bagaimana Anda pergi!
Pembaruan 1:
Tambahkan ini ke file functions.php Anda;
Pembaruan saya mencakup cara yang sedikit lebih mudah untuk menangani pengaturan posisi menu Anda, Anda hanya perlu menentukan nama halaman submenu Anda dan posisi yang Anda inginkan di dalam menu.
Namun jika Anda memilih halaman submenu yangUntuk menghindari itu, contoh Kaiser menyediakan beberapa pemeriksaan dasar untuk itu.$location
sama dengan kunci yang ada, itu akan menimpa kunci itu dengan Anda, sehingga item menu akan hilang dengan item menu Anda di tempatnya. Menambah atau mengurangi nomor untuk memesan menu Anda dengan benar jika itu masalahnya. Mirip, jika seseorang menginstal plugin yang memengaruhi area menu yang sama, dan yang memiliki$location
item submenu yang sama dengan Anda maka masalah yang sama akan terjadi.Pembaruan 2:
Saya telah menambahkan blok kode tambahan yang memeriksa semua kunci yang ada dalam array terhadap keinginan kita
$location
dan jika kecocokan ditemukan, kita akan menambah$location
nilai kita1
untuk menghindari item menu saling menimpa. Ini adalah kode yang bertanggung jawab untuk itu,Pembaruan 3: (skrip direvisi untuk memungkinkan pengurutan beberapa item sub-menu)
Dalam contoh di atas Anda dapat menargetkan beberapa sub menu dan beberapa item per sub menu dengan mengatur parameter yang sesuai di dalam
$target_menu
variabel yang menyimpan array nilai multi-dimensi.Revisi ini akan mencegah saling bertukar item sub-menu satu sama lain jika mereka memiliki kunci (posisi) yang sama, karena akan siklus melalui sampai menemukan kunci yang tersedia (posisi) yang tidak ada.
sumber
Warning: Invalid argument supplied for foreach() in /wp-content/themes/mythemename/functions.php on line 1444
Jalur 1444:foreach ($submenu[$menus] as $index => $value){
danWarning: ksort() expects parameter 1 to be array, null given in /wp-content/themes/mythemename/functions.php on line 1468
Jalur 1468:ksort($submenu[$menus]);
Menu admin (dan masalahnya)
Karena menu admin benar-benar tidak memiliki kait dan API publik (yang memungkinkan untuk memindahkan item), Anda harus menggunakan beberapa solusi. Jawaban berikut ini menunjukkan kepada Anda apa yang menunggu Anda di masa depan dan bagaimana Anda dapat bekerja selama kami memiliki kondisi inti saat ini.
Pertama-tama saya harus perhatikan, bahwa scribu bekerja pada patch menu admin yang seharusnya membuat penanganannya lebih mudah. Struktur saat ini cukup kacau dan saya telah menulis artikel tentang itu yang akan segera usang. Harapkan WP 3.6 untuk mengubah segalanya sepenuhnya.
Lalu ada juga intinya, bahwa Anda tidak harus menggunakan halaman Opsi untuk tema lagi. Ada - saat ini - «Penyesuai Tema« untuk itu.
Plugin
Saya menulis sebuah plugin yang menguji ini dengan halaman "Opsi Tema" default untuk halaman TwentyEleven / Ten options. Seperti yang Anda lihat, tidak ada API nyata yang memungkinkan posisi apa pun. Jadi kita harus mencegat global.
Singkatnya: Cukup ikuti komentar dan lihat pemberitahuan admin, yang saya tambahkan untuk memberikan Anda beberapa hasil debug.
Semoga berhasil dan selamat bersenang - senang.
sumber
Filter khusus
Ada kemungkinan lain untuk mencapai ini. Jangan tanya kenapa saya belum memikirkannya sebelumnya. Lagi pula, ada filter yang didedikasikan untuk pesanan menu kustom. Cukup atur
true
untuk mengizinkan pesanan khusus. Kemudian Anda mendapat kait kedua untuk memesan item menu utama. Di sana kami hanya memotongglobal $submenu
dan beralih di sekitar item sub menu kami.Contoh ini bergerak barang Menu di atas yang item yang Widgets untuk menunjukkan fungsionalitas. Anda dapat menyesuaikannya dengan apa yang Anda suka.
sumber
function wpse70916_custom_submenu_order( $menu )
dengan mengatakan, memesan ulang tidak hanya Menu , tetapi juga Tema Opsi , Widget , Editor dll. Membuatnya cukup fleksibel dan juga agar item tidak saling menimpa? Terima kasih.