2011-05-15 5 views
2

Wordpress의 페이지 (http://cl.ly/6nLC)의 '편집'화면에 표시되는 페이지를 '필터링'할 수 있습니까? 나는 플러그인 개발자를 위해 Wordpress의 action/hook 섹션을 살펴 봤지만 아무 것도 찾을 수 없었다.Wordpress, Admin 편집 화면의 필터 페이지

특정 사용자가 특정 페이지 (및 하위 페이지)를 편집 할 수 있고 다른 사용자가 해당 페이지를 편집 할 수는 없지만 다른 페이지를 편집 할 수 있다는 점을 달성하려고합니다.

다른 사용자를 다른 그룹에 배치 할 수있는 플러그인을 이미 작성했습니다. 이제는 다른 권한을 가져야 만합니다. 사용자는 그룹이 user_meta 테이블에 저장되는 멤버입니다.

그러나 'any any'필터 훅/메소드가있는 경우 누군가가이를 지적 할 수있을 것입니다. 앞으로 더 나아갈 수있을 것입니다.

친절하게 제공합니다.

답변

4

posts_where 필터를 사용하면 SQL 쿼리에 조건을 추가하여 일부 페이지를 필터링 할 수 있습니다. load-{filename} 작업을 사용하면 페이지를 관리 할 때만 필터를 적용 할 수 있습니다.

add_action('load-edit.php', 'my_load_edit_php_action'); 
function my_load_edit_php_action() { 
    if ($_GET['post_type'] !== 'page') return; 
    add_filter('posts_where', 'my_posts_where_filter'); 
} 

function my_posts_where_filter($sql) { 
    if (current_user_can('your_capability')) { 
    global $wpdb; 
    $sql = " AND $wpdb->posts.ID NOT IN (1,2,3)" . $sql; 
    } 
    return $sql; 
} 
+1

감사합니다. 필요한 항목 만 있으면 어디에서나 찾을 수있었습니다. – Matthijn

+0

여전히 상당히 도움이됩니다. 내가 메모리 부하를 저지를 필요가 - [파일 이름] 조치를 통해 훌륭한 작품과 나는 그것을 사용하는이 간결하고 쉬운 방법을 주셔서 감사합니다! – andrewteg