워드프레스 관리자 화면의 글 목록에서는 기본적으로 모든 글이 우선 표시되고 자신의 글이 아니거나 수정할 수 없는 글에는 ‘편집’ 링크 없이 ‘보기’ 링크만 제공됩니다.
프로젝트 진행을 하다보면 글 목록 자체에 ‘로그인한 사람의 글’만 보여지길 원하는 경우가 종종 있는데요, 이는 정상적인 방법으로는 해결이 어려운 내용입니다.
이를 적용하기위해서는 약간의 트릭이 필요한데요, 기본으로 워드프레스에서 제공하는 ‘내 글’ 보기 링크를 응용한 것입니다.
(Mine 에 대한 번역이 ‘자료’로 되어있군요… 번역 수정 신고도 해야겠습니다.)
이 링크의 주소(URL)을 살펴보면 author=xxxx 라는 형식의 질의문이 포함되어 있습니다. 즉, 이 질의문만 있으면 ‘내 글만’ 보이게 되는 것입니다.
이를 활용해서 ‘load-edit.php’ 후크에 함수(function)을 등록하여 글 목록 페이지 자체에 ‘내 글’ 만 보이도록 트릭을 걸 수 있습니다.
<?php /* Plugin Name: Show My Posts Only Plugin URI: http://082net.com/tag/my-posts-only Description: 글 관리 화면에서 내 글만 보이게 하기(관리자/편집자 제외) Version: 0.1 Author: Choen, Youngmin Author URI: http://082net.com/ */ namespace CYM; add_action('load-edit.php', 'CYM\show_my_posts_only'); function show_my_posts_only() { $screen = convert_to_screen(); $post_type = $screen->post_type; $caps = get_post_type_object($post_type)->cap; if ( !current_user_can( $caps->edit_others_posts ) ) { add_filter( "views_{$screen->id}", 'CYM\show_my_posts_only_views' ); if ( !isset($_REQUEST['author']) ) { $_REQUEST['author'] = $_GET['author'] = get_current_user_id(); } if ( isset($_REQUEST['all_posts']) && $_REQUEST['all_posts'] == '1' ) { unset($_REQUEST['all_posts']); } } } function show_my_posts_only_views($views) { if ( isset($views['mine']) && isset($views['all']) ) { // Mine 보기가 있으므로 All 삭제해도 무방 unset($views['all']); } elseif ( isset($views['all']) ) { // All count to zero $views['all'] = preg_replace('|<span class="count">\(\d+\)</span>|i', '<span class="count">(0)</span>', $views['all']); } return $views; }
플러그인으로 만들어 올려두었으니 필요한 분들은 활용하세요.