게시물 유형 추가 / 편집에서 특정 화면 옵션 및 메타 박스를 제거하는 방법은 무엇입니까?


10

이제 원하는 게시물 유형 내에서 특정 게시물을 추가하거나 편집 할 때 더 많은 화면 옵션이 있습니다. 그러나 이러한 화면 옵션은 메타 상자를 표시하거나 숨 깁니다. 메타 상자의 이러한 등록 된 모든 화면 옵션 목록을 프로그래밍 방식으로 얻을 수 있기 때문에 특정 화면 옵션 배열이 존재하는지 다시 확인할 수 있고, 존재하는 경우 프로그래밍 방식으로 제거 할 계획입니다.

워드 프레스-화면 옵션-게시물 추가 또는 편집-메타 박스 전체 화면으로 보려면 여기를 클릭하십시오

질문 원하는 게시물 유형 내에서 특정 게시물을 추가하거나 편집하려는 게시물 유형에 대해 등록 된 모든 화면 옵션 (메타 상자) 목록을 프로그래밍 방식으로 얻는 방법은 무엇 입니까 ?

궁극적으로, 여기서 목표는 이러한 옵션을 제거하고 단순히 비활성화하는 것이 아닙니다. 불필요한 대시 보드 메타 박스제거하기 위해 달성 한 내용을 따라 무언가를하려고 합니다.

답변:


13

당신이 필요로하는 것은 $wp_meta_boxesby by indexed입니다 get_current_screen()->id. 화면 옵션을 제거하면 'in_admin_header'후크를 사용하여 화면 옵션이 표시되기 직전에 수행 할 수있는 메타 박스도 제거됩니다 .

따라서이 스크린 샷에 표시되는 "트랙백 보내기" 화면 옵션을 제거한다고 가정 해 보겠습니다 .

다음 클래스를 테마의 functions.php파일이나 플러그인에 드롭하면 코드가 "트랙백 보내기" 화면 옵션 을 제거합니다 (그리고 메타 박스도 연관되어 있습니다).

class Michael_Ecklunds_Admin_Customizer {
  function __construct() {
    add_action( 'in_admin_header', array( $this, 'in_admin_header' ) );
  }
  function in_admin_header() {
    global $wp_meta_boxes;
    unset( $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] );
  }
}
new Michael_Ecklunds_Admin_Customizer();

위의 코드를 WordPress 3.4 사이트에 추가 한 후의 모습은 다음과 같습니다.

PhpStorm 내 에서 Zend 디버거를 사용하는 것은 다음 $wp_meta_boxes[get_current_screen()->id]과 같습니다. 사후 편집 화면에서 WordPress 3.4의 기본 설치에 어떤 값이 있는지 확인할 수 있습니다 (예에서 참조한 배열 색인에 동그라미를 표시했습니다 $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'].

잘만되면 이것이 당신이 찾고 있었던 것입니까?


3
간단하게. 축하합니다, Ecklund, 당신은 정식 답변뿐만 아니라 전설적인 답변을 받았습니다 ..!
brasofilo 2016 년

@brasofilo 칭찬 감사합니다. 영광입니다.
MikeSchinkel

@ MikeSchinkel 이것은 게시물의 추가 / 편집에 작동하며 고맙지 만 모든 게시물 목록이 포함 된 wp_list_table이있는 페이지의 화면 옵션 메타 상자를 어떻게 제거합니까? 스크린 샷 # 1을 참조하십시오.
Michael Ecklund 2018 년

@MichaelEcklund 안녕하세요, 질문을 완전히 이해하기에는 너무 피곤할 때 질문에 대답해서는 안됩니다. 답변되지 않은 질문에 대한 대답은 실제로 내가 대답 한 질문과 크게 다르므로 두 가지 다른 질문입니다. 이 질문을 편집하여 내가 대답 한 것을 묻고 다른 질문을 추가하여 내가하지 않은 것을 묻는 것에 대해 어떻게 생각하십니까? 그렇게 할 수 있고 의견에 여기에 대한 링크를 게시하여 찾을 수 있다면 해당 질문에 대한 동등한 세부 정보에 대한 답변도 게시 할 것입니다. 그렇지 않으면 두 가지 모두에 대해 일관된 답변을 작성하는 것이 복잡해질 수 있습니다.
MikeSchinkel

1
@MichaelEcklund 쿨 감사합니다. 답변 : wordpress.stackexchange.com/a/56896/89
MikeSchinkel 2016 년

0

죄송합니다. 비트 사이드 트랙이지만 상자 메타 상자에서 wp를 제거 할 때 유용하지만 사용자 정의 또는 사용자 정의 테마 관련 메타 상자에는별로 도움이되지 않습니다. 좀 더 설명하기 위해 : 게시물 / 페이지를 새로 만들 때마다 화면 옵션에 표시되는 사용자 정의 메타 상자를 소개하는 새로운 테마를 설치했습니다. (나는 wp를 처음 사용합니다.) Mike의 접근 방식을 사용하는 어떤 이유로 든이 사용자 정의 메타 상자를 제거 할 수 없었지만 모든 사용자 정의가 아닌 경우에는 작동했습니다. 내 어리 석음 때문에 나는 몇 시간 동안 벽을 계속 쳤지 만 여전히 알아낼 수 없었기 때문에 나는 이것으로 되돌아 가야했다.

if (is_admin()) :
function my_remove_meta_boxes() 
{
  if(!current_user_can('administrator')) 
  {
    remove_meta_box('theme_custom_meta_box', 'post', 'side');
  }
}
add_action( 'add_meta_boxes', 'my_remove_meta_boxes' );
endif;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.