Trong bài viết này, chúng ta sẽ hướng dẫn bạn cách thêm một chức năng tùy chọn cho menu trong WordPress: chỉ hiển thị khi người dùng đã đăng nhập.
Chức năng này rất hữu ích nếu bạn muốn tạo các mục menu để truy cập nội dung đặc biệt chỉ dành cho người dùng đã đăng nhập.
functions.php
Hãy sao chép và dán đoạn code dưới đây vào tệp functions.php
của theme mà bạn đang sử dụng:
// Thêm meta box tùy chọn "Chỉ hiển thị khi đăng nhập"
add_action('wp_nav_menu_item_custom_fields', function ($item_id, $item, $depth, $args) {
$is_logged_in_only = get_post_meta($item_id, '_menu_item_logged_in_only', true);
?>
<p class="field-logged-in-only description description-wide">
<label for="edit-menu-item-logged-in-only-<?php echo $item_id; ?>">
<input type="checkbox" id="edit-menu-item-logged-in-only-<?php echo $item_id; ?>"
name="menu-item-logged-in-only[<?php echo $item_id; ?>]" value="1" <?php checked($is_logged_in_only, '1'); ?> />
<?php _e('Chỉ hiển thị khi người dùng đã đăng nhập'); ?>
</label>
</p>
<?php
}, 10, 4);
// Lưu giá trị meta "Chỉ hiển thị khi đăng nhập"
add_action('wp_update_nav_menu_item', function ($menu_id, $menu_item_db_id, $args) {
if (isset($_POST['menu-item-logged-in-only'][$menu_item_db_id])) {
update_post_meta($menu_item_db_id, '_menu_item_logged_in_only', 1);
} else {
delete_post_meta($menu_item_db_id, '_menu_item_logged_in_only');
}
}, 10, 3);
// Lọc menu items dựa trên trạng thái đăng nhập
add_filter('wp_nav_menu_objects', function ($items, $args) {
foreach ($items as $key => $item) {
$is_logged_in_only = get_post_meta($item->ID, '_menu_item_logged_in_only', true);
if ($is_logged_in_only && !is_user_logged_in()) {
unset($items[$key]);
}
}
return $items;
}, 10, 2);
functions.php
, hãy sao lưu lại tài liệu phòng trường hợp gây xung đột.Với những bước đơn giản trên, bạn đã có thể tùy chỉnh menu WordPress để hiển thị nội dung theo nhu cầu. Hãy bắt tay thực hiện và tắng trải nghiệm của trang web của bạn ngay hôm nay!