Yoast의 WordPress SEO : 비 관리자를위한 게시물에서 메타 상자 숨기기


9

나는 다중 저자 웹 사이트를 가지고 있으며 모든 회원이 게시하는 게시물에 SEO 세부 정보를 입력하도록 허용하는 것이 매우 편안하지 않습니다. 웹 사이트 관리자에게만 표시되도록하겠습니다. 어떤 아이디어?

답변:


19

Yoast SEO 플러그인 사이트의 API 문서에서 말한 내용이 무엇인지 ID말하지 않았으며 처분 할 때 Yoast 사본을 설치하지 않았지만 yoas-plugin-dir/admin/class-metabox.php144 행 에 따르면 meta_box가 등록되었습니다.

add_meta_box( 'wpseo_meta', ...etc ); ...

add_meta_boxes동일한 파일의 32 행 에있는 후크에 연결되어 있습니다.

add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );

물론 편집 후 화면의 메타 박스 자체에서 ID를 얻을 수 있습니다.

다음을 수행 할 수 있습니다.

add_action('add_meta_boxes', 'yoast_is_toast', 99);
function yoast_is_toast(){
    //capability of 'manage_plugins' equals admin, therefore if NOT administrator
    //hide the meta box from all other roles on the following 'post_type' 
    //such as post, page, custom_post_type, etc
    if (!current_user_can('activate_plugins')) {
        remove_meta_box('wpseo_meta', 'post_type', 'normal');
    }
}

... 여기서 게시물 유형은 post하나 이상의 맞춤 게시물 유형 과 같이이 제한을 적용하려는 게시물 유형입니다!

트릭을해야합니다.

업데이트 : 수정 manage_plugins해야합니다 activate_plugins.


16
일에 대한 yoast_is_toast().
카이저

@Ahmad M은 제안 된 편집에 감사하지만이 경우 $post_typevar 및 action 인수 매개 변수가 필요하지 않으며 통지 / 오류가 발생하지 않습니다. 또한 $post_typevar 를 포함 하면 수행하지 않은 다른 함수 내에서 게시물 유형을 정의해야하므로 사용자가 올바르게 작동하도록 이것을 실행했을 것입니다! 이 경우 포스트 유형 이름을 전달하는 것이 완벽 합니다. 즉 함수에 'post'직접 입력하십시오 remove_meta_box. 어쨌든 제안 해 주셔서 감사합니다.
Adam

@userabuser : 설명을 해주셔서 감사합니다. $post_type이미 정의되어 있으며 add_meta_boxes동작 후크 기능에 의해 사용될 준비가되었습니다 .이 동작 후크의 Adam Brown 소스보기 를 참조하십시오 . 활용 $post_type이 경우하면의 코드를 독립적으로 만들 것입니다 post_type그것을 제거합니다 의미, 편집 화면 wpseo_meta에서 메타 상자를 모든 이에 발견 된 포스트 유형, 경우 아무 것도 반환하지 않습니다 wpseo_meta찾을 수 없습니다.
Ahmad M

@AhmadM 감사합니다. var가 이미 정의되어 있다는 것을 알고 있지만 후크 / 함수에 전달 해야하는 것은 아닙니다. 이 경우 OP는 postpost_type 에서 메타 상자를 제거하려고 하므로 초기 솔루션에서 세부 제어가 가능합니다. 그러나 모든 게시물 유형에 대해 제거하려는 경우 이미 정의 된 var를 사용하는 $post_type것이 좋습니다. 내가 할 일은 $post_type누군가가 이것을 등록 된 모든 post_types에 적용하려는 경우 변수를 사용하여 추가 예제를 포함하도록 내 대답을 편집 하는 것입니다.
Adam

5

Yoastfunctions.phpWordPress SEO 플러그인 ( API Docs ) 에 따라 플러그인 또는 테마 파일에 이것을 붙여 넣으 십시오 .

if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
    add_filter('wpseo_use_page_analysis', '__return_false');
}

오류를 피하려면 ... 이것은 물건을 숨기려고 시도하기 전에 기능이 존재하는지 확인하여 플러그인을 비활성화하고 오류를 발생시키지 않습니다.

init이것이 제대로 작동하기 위해 연결해야 할 수도 있습니다.

function wpse_init(){
    if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
        add_filter('wpseo_use_page_analysis', '__return_false');
    }   
}
add_action('init', 'wpse_init');

4

remove_meta_box 함수를 사용하여 제거 할 수 있습니다 .

if ( ! current_user_can( 'edit_pages' ) ) {
    add_action( 'add_meta_boxes', 'my_remove_wp_seo_meta_box', 100000 );
}

function my_remove_wp_seo_meta_box() {
    remove_meta_box( 'wpseo_meta', 'post', 'normal' );
}

add_action에서 100000을 확인하십시오. 이렇게하면 WP SEO 메타 박스가 연결된 후에 수행됩니다.


2

관리 플러그인을 사용하여 역할에 따라 사용자로부터 항목을 숨길 수 있습니다. 클라이언트에서 Yoast SEO 항목을 숨기고 백엔드를 단순화하기 위해 이것을 사용했습니다.

http://wordpress.org/extend/plugins/adminimize/

숨기려는 항목에 CSS 선택기를 추가하여 사용하기가 매우 쉽습니다. SEO 페이지 분석 탭 (#linkdex)을 숨기기 위해 사용했습니다


0

YoPress의 WordPress SEO에는 관리자가 아닌 사용자를 위해 WordPress SEO 설정의 고급 부분을 사용하지 않도록 설정하는 옵션이 있습니다. 상자를 완전히 사용 중지하려면 다른 플러그인을 사용하여 관리자가 아닌 관리자의 게시물 편집기 페이지 요소를 제거 할 수 있습니다 (예 : 관리자가 아닌 관리자의 게시물 편집기에서 WordPress SEO 상자 제거).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.