Do yêu cầu của website là mỗi page là 1 menu khác nhau. lên mình có viết 1 widgets dựa trên widget menu mặc định của wordpress có thêm 1 số chức năng như. Chọn hiện hoặc ẩn. Hiện ở page nào, ẩn ở page nào hay chỉ hiện ở 1 page hoặc ẩn ở 1 page còn hiện ở toàn bộ các page.
-
Code widget tùy chỉnh menu ẩn hiện ở từng page
Các bạn có thể chèn code sau vào file functions.php hoặc tạo 1 file riêng rồi require_once file đó vào file functions.php là ok.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135add_action('widgets_init', 'menu_svl_load_widgets');function menu_svl_load_widgets(){register_widget('Menu_Page_Widget');}class Menu_Page_Widget extends WP_Widget {function Menu_Page_Widget(){$widget_ops = array('classname' => 'menu_svl_comment', 'description' => 'Adds support for custom menu.');$control_ops = array('id_base' => 'menu_svl-widget');$this->WP_Widget('menu_svl-widget', 'OnegoCorp: Custom menu page', $widget_ops, $control_ops);}function widget($args, $instance){extract($args);$title = apply_filters('widget_title', $instance['title']);$nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false;$hide_show = $instance['hide_show'];$show_page = $instance['show_page'];if ( !$nav_menu )return;if($hide_show == 1){if(!is_page($show_page)){echo $before_widget;if($title) {echo $before_title.$title.$after_title;}wp_nav_menu( array( 'fallback_cb' => '', 'menu' => $nav_menu ) );echo $after_widget;}}elseif ($hide_show == 2){if(is_page($show_page)){echo $before_widget;if($title) {echo $before_title.$title.$after_title;}wp_nav_menu( array( 'fallback_cb' => '', 'menu' => $nav_menu ) );echo $after_widget;}}else{echo $before_widget;if($title) {echo $before_title.$title.$after_title;}wp_nav_menu( array( 'fallback_cb' => '', 'menu' => $nav_menu ) );echo $after_widget;}}function update($new_instance, $old_instance){$instance = $old_instance;$instance['title'] = strip_tags($new_instance['title']);$instance['nav_menu'] = (int)$new_instance['nav_menu'];$instance['hide_show'] = (int)$new_instance['hide_show'];$instance['show_page'] = (int)$new_instance['show_page'];return $instance;}function form($instance){$defaults = array('title' => '');$instance = wp_parse_args((array) $instance, $defaults);$nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : '';$hide_show = isset( $instance['hide_show'] ) ? $instance['hide_show'] : '';$show_page = isset( $instance['show_page'] ) ? $instance['show_page'] : '';// Get menus$menus = wp_get_nav_menus( array( 'orderby' => 'name' ) );$pages = get_pages();?>foreach ( $menus as $menu ) {echo '
Chúc các bạn thành công!
Nguồn: levantoan[.]com










