做項(xiàng)目總是有一些很奇怪的要求,比如有些客戶需要給每個(gè)頁面設(shè)置不同的菜單,但是這些總是難不倒 WordPress: <?php
add_action('init','wpjam_register_nav_menus_init');
function wpjam_register_nav_menus_init(){
global $wpdb;
$sql = "SELECT meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key = 'nav_menu';";
$nav_menus = $wpdb->get_col($sql);
if($nav_menus){
foreach ($nav_menus as $nav_menu){
if($nav_menu){
register_nav_menu( $nav_menu, $nav_menu);
}
}
}
}
add_action('save_post', 'wpjam_save_nav_menu_options');
function wpjam_save_nav_menu_options($post_id){
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $post_id;
update_post_meta($post_id, 'nav_menu',$_POST['nav_menu']);
}
function wpjam_nav_menu_options(){
global $post;
if($_REQUEST['nav_menu']){
$nav_menu = $_REQUEST['nav_menu'];
}else{
$nav_menu = get_post_meta($post->ID, 'nav_menu', true);
}
?>
<p><input type="text" name="nav_menu" value="<?php echo $nav_menu?>" id="nav_menu" style="width:98%;" /></p>
<?php
}
add_action('admin_menu', 'wpjam_nav_menu_options_box');
function wpjam_nav_menu_options_box() {
add_meta_box('nav_menu_options', '自定義菜單位置', 'wpjam_nav_menu_options', 'page', 'normal', 'high');
}
將上面代碼作為一個(gè)插件上傳激活,然后在每個(gè)頁面下面就有一個(gè)自定義菜單位置的輸入框,只要設(shè)置了名稱,就會(huì)在菜單管理界面出現(xiàn)菜單位置,然后你創(chuàng)建一個(gè)新的菜單,并設(shè)置給菜單位置即可。 如果你想實(shí)現(xiàn)每篇日志也可以自定義菜單位置,在 wpjam_nav_menu_options_box 添加下面一行: add_meta_box('nav_menu_options', '自定義菜單位置', 'wpjam_nav_menu_options', 'post', 'normal', 'high');
|