내 메인 wp navbar에는 WordPress의 연구자에게만 표시하고 싶은 'Research'라는 메뉴 항목이 있습니다.
연구원은 연구원, 학생, 직원 등에 대한 옵션을 포함하는 다중 선택 필드인wpum_relationship_to_lib
라는 사용자 메타데이터 필드로 정의됩니다.
researcher
는 사용자가 이 메뉴에 액세스하기 위해 선택하는 옵션 중 하나여야 하며researcher
必须是用户选择访问该菜单的选项之一,并且wpum_relationship_to_lib
WordPress 역할을 정의하지 않는 것이 중요합니다.
모든 메뉴가 메인메뉴입니다. 그리고 로그인할 때까지 메뉴를 숨겨야 합니다. 메뉴를 올바르게 제한하지 않는 내 코드를 참조하십시오.
function restrict_menu_to_researchers($items, $args) { // 检查菜单是否分配给所需位置 if ($args->theme_location === 'primary') { // 检查用户是否已登录 if (is_user_logged_in()) { $user_id = get_current_user_id(); $relationship_values = get_user_meta($user_id, 'wpum_relationship_to_lib', true); // 检查用户是否为“researcher” if (is_array($relationship_values) && in_array('researcher', $relationship_values)) { // 允许研究人员访问菜单 return $items; } else { foreach ($items as $key => $item) { if ($item->title == 'Research') { // 隐藏非研究人员的“Research”菜单 unset($items[$key]); } } } } else { foreach ($items as $key => $item) { if ($item->title == 'Research') { // 隐藏未登录用户的“Research”菜单 unset($items[$key]); } } } } return $items; } add_filter('wp_nav_menu_objects', 'restrict_menu_to_researchers', 10, 2);
제공된 코드는 대부분 정확합니다. 그런데 사용자 관계 값을 확인할 때 조건문에 작은 문제가 있습니다. wpum_relationship_to_lib 메타 필드에서 관계 값 중 하나로 "researcher"를 선택한 사용자에게만 "Research" 메뉴 항목이 표시되도록 코드를 업데이트했습니다. 또한 로그인하지 않은 사용자를 위해 조사 메뉴를 숨깁니다. 아직 코드를 테스트하지 않았으므로 어떤 의견이라도 환영합니다. #joshmoto의 코드는 유효하지만 foreach 루프에서 !in_array($menu_object->title, $relationship_array) 조건은 메뉴 개체 제목이 관계 배열에 없는지 확인합니다. 질문에서 제가 이해한 바에 따르면 "researcher"라는 값이 관계형 배열에 있는지 확인하고 싶습니다. 따라서 조건을 in_array('researcher', $relationship_array)로 업데이트해야 합니다.
으아악답을 얻었습니다. 흥미로운 점은 대소문자를 구분한다는 것입니다. 다음 코드를 사용해야합니다. 그러나 테스트 플랫폼에서는 이 코드 줄 없이도 작동합니다. 저는 이것이 소문자일지도 몰랐습니다:
(is_array($relationship_values) && in_array('researcher', array_map('strtolower', $relationship_values))) { ...
도움과 시간을 내주신 모든 분들께 감사드립니다. –