Apakah ada cara saya dapat membuat kode item menu kustom saat tema pertama kali diinstal? Saya membuat tema yang secara otomatis akan membuat beberapa halaman umum ketika diinstal. Jadi saya perlu tahu apakah saya juga bisa menambahkannya ke menu khusus Wordpress sehingga klien tidak perlu menambahkannya secara manual?
Dengan kata lain: bagaimana cara memasukkan / membuat item menu kustom secara terprogram?
Beritahu saya jika ada yang tidak jelas. Panduan untuk halaman codex yang sesuai dipersilahkan. Terima kasih!
perbarui: mencoba kode dari sini Menargetkan menu tertentu dengan wp_nav_menu_items
Registrasi menu:
function register_my_menus() {
register_nav_menus(
array('main-menu' => __( 'Main Menu' ) )
);
}
add_action( 'init', 'register_my_menus' );
Penggunaan template:
<?php wp_nav_menu( array( 'theme_location' => 'main-menu' ) ); ?>
Kode untuk menambahkan item baru:
function new_nav_menu_items($items) {
if( $args->theme_location == 'main-menu' ){
$homelink = '<li class="home"><a href="' . home_url( '/' ) . '">' . __('Home') . '</a></li>';
$items = $homelink . $items;
return $items;
}
}
add_filter( 'wp_nav_menu_items', 'new_nav_menu_items', 10, 2 );
ketika menambahkan kode untuk menambahkan item baru di menu nav di functions.php
nothings file terjadi di halaman menu di panel admin tetapi item menu saat ini hilang di situs!
Fatal error: Cannot use object of type stdClass as array in C:\wamp\www\citystir\wp-admin\menu.php on line 25
. Tetapi menu dibuat dan ketika halaman di-refresh semuanya berfungsi tetapi tidak ada yang ditampilkan diAppearance -> Menu Theme Location
bagian. Kami sangat dekat :) Terima kasih!$locations = get_theme_mod('nav_menu_locations');
Jadi, kode sebelum itu (semua penyisipan menu selesai) dieksekusi dan kode setelah itu (setel lokasi tema yang diinginkan) jangan dieksekusi .Kode asli Anda sangat dekat dengan uang dan saya serius berpikir solusi panjang ini oleh @Bainternet (jangan tersinggung) terlalu banyak, jadi lihat ini:
Satu-satunya masalah Anda adalah bahwa Anda tidak mengembalikan $ item setelah fungsi memeriksa menu yang benar, dan Anda kehilangan argumen panggilan balik kedua yang diperlukan untuk melakukan pemeriksaan ( $ args ).
sumber
Ada bug di Wordpress 3.4.2:
https://github.com/WordPress/WordPress/commit/ae96b842f9f55ecfb22da705a4902b9d25580259#wp-includes/nav-menu.php
Anda harus membuat istilah relasi secara manual:
Lihat https://gist.github.com/4148529 untuk contoh kelas Menu untuk pembuatan menu sederhana.
sumber
Sebagai informasi, pengguna saat ini harus mendapatkan hak untuk menambahkan istilah, menu_items saya dibuat tetapi tidak ditambahkan dalam tabel wp_terms_relationship sebelum saya menambahkan panggilan ke wp_set_current_user (1);
sumber