![](https://thuvienkhcn.net/wp-content/uploads/2018/06/wordpress-tips-300x207-1.jpg)
Tạo vị trí menu và widget trong Theme WordPress
Nếu bạn đang phát triển một theme tự tạo riêng cho mình bằng WordPress? Hoặc đơn giản là bạn muốn có thêm nhiều vị trí widget cũng như menu cho theme mà các bạn đang dùng? Bài viết này sẽ giúp cho các bạn giải quyết vấn đề.
1 Tạo vị trí Widget trong Theme WordPress
– Trước tiên chúng ta cần đăng ký (register) widget mà chúng ta cần tạo. Để làm việc này các bạn vào file functions.php trong folder theme mà các bạn đang dùng. Chèn đoạn code sau :
if ( function_exists('register_sidebar') ){ register_sidebar(array( 'name' => 'New Widget', 'before_widget' => '<div id="new-widget">', 'after_widget' => '</div>', 'before_title' => '', 'after_title' => '', )); }
Trong đoạn code trên, các bạn chỉ cần chú ý tham số : name chính là tên widget mà chúng ta cần tạo. Tên này sẽ hiện ra ở phần Widget ở trong trang admin. Các bạn có thể chọn bất kì một tên nào theo ý muốn. Không được trùng với tên bất kì Widget nào đã có trước rồi nhé.
– Sau khi chúng ta đăng ký xong, các bạn có thể chèn widget mới đăng ký này vào bất kì phần nào trong theme. Giả sử chúng ta chèn vị trí này ở trong file header.php nằm trong folder theme WordPress như sau :
<?php dynamic_sidebar( 'New Widget' ); ?>
Chỉ cần chèn đúng tên như thế. Các bạn đã có ngay một vị trí widget nằm ngay tại vị trí mà các bạn dán code bên trên vào.
2 Tạo vị trí Menu trong Theme WordPress
Cũng tương tự như ở phần Widget. Chúng ta cũng cần đăng ký vị trí menu ở trong file functions.php như sau :
function register_my_menu() { register_nav_menu('header-menu',__( 'Header Menu' )); } add_action( 'init', 'register_my_menu' );
register_nav_menus( array( 'header-menu' => __( 'Header Menu' ), 'extra-menu' => __( 'Extra Menu' ) ) );
– Và bây giờ để có thể hiển thị menu trong theme. Các bạn chỉ cần chèn đoạn code sau vào ngay vị trí cần hiển thị :
<?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?>
wp_nav_menu( array( 'theme_location' => 'extra-menu', 'container_class' => 'my_extra_menu_class' ) );