Hướng dẫn tạo dynamic Menu wordpress

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Hướng dẫn tạo dynamic Menu wordpress

Trong bài hôm nay mình chỉ dẫn các bạn cách tạo menu động hiển thị dựa theo trạng thái login rồi cho người sử dụng truy cập. Cách duy đặc biệt là hiển thị các menu không giống nhau cho user đăng nhập, sử dụng template tag để kiểm tra, nhưng trước tiên bạn phải trang bị 2 menu, một menu sẽ hiển thị cho logged user và menu kia cho người thăm viếng đọc nội dung thông thường.

 register_nav_menus( array( 'logged-in' =>  __( 'Logged-in Menu Area', 'yourtheme' ), 'visitor' =>  __( 'Visitor Menu Area', 'yourtheme' ), ));  

Cách dễ dàng nhất, bạn sử dụng hàm is_user_logged_in() để switch trực tiếp. Gọi hàm chèn menu wp_nav_menu vào trong file header.php

 if (is_user_logged_in()){ wp_nav_menu( array( 'menu' =>  'Logged In Menu', 'container_logged-in-menu', 'theme_location' =>  'logged-in' )); } else { wp_nav_menu( array( 'menu' =>  'Visitor Menu', 'container_visitor-menu', 'theme_location' =>  'visitor' )); };  

Tuy có cách khác không cần thay đổi cấu trúc này, tư duy hướng lập trình nâng cấp code đễ dàng, bạn cũng có thể có thể sử dụng hook wp_nav_menu_args, để sửa lại tham số của hàm wp_nav_menu . Đăng ký thêm menu bằng phương pháp clone từ các menu đã tạo trước đó. Chúng ta có hàm lấy bản kê các menu có đăng ký trong theme của bạn bởi hàm register_nav_menu.

 // we're cloning existing theme_locations and creating _loggedin ones. add_action( 'init', 'register_loggedin_menus', 9999 ); function register_loggedin_menus() { $default_menus = get_registered_nav_menus(); $loggedin_menus = array(); foreach ($default_menus as $slug =>  $name){ $loggedin_menus[$slug . '_dmlu_loggedin'] = $name . ' Loggedin'; } register_nav_menus( $loggedin_menus ); }  

Kiểm tra nếu user logged-in, và nội dung menu tạo trong admin có gán vào theme_location mà bạn sẽ hiển thị thay thế menu cũ. Code trong hook wp_nav_menu_args vào file functions.php như sau:

 // depending on the current menu arguments, if there exists a _loggedin theme location we're using that when user is logged in. add_filter('wp_nav_menu_args', 'serve_different_menu'); function serve_different_menu($content){ $loggedin_theme_location = $content['theme_location'] . '_dmlu_loggedin'; $active_menu_locations = get_nav_menu_locations(); if ( is_user_logged_in() && !empty($content['theme_location']) && $active_menu_locations[$loggedin_theme_location] != 0 && array_key_exists($loggedin_theme_location, $active_menu_locations) ) { $content['theme_location'] = $content['theme_location'] . '_dmlu_loggedin'; return $content; } else { return $content; } }  

Đó là cách sử lý cơ bản, tùy theo website bạn thiết kế, sẽ thay đổi code. Chúc bạn thành công.

Để nhận được bài viết mới vui lòng đăng ký kênh kiến thức WordPress từ A-Z ở Form bên dưới. Bạn cũng có thể có thể thu được sự trợ giúp trên Twitter và Facebook

Bài viết Hướng dẫn tạo dynamic Menu wordpress được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang