기록을 하지 않았더니, 수정한 부분을 계속 까먹어서 일단 기록 
현재(17-12-22) 사용 중인 Mechanic Theme의 경우 ‘인용’,’추가정보’ 등 글 형식을 지정하면 ‘기본’글과 다른 방식으로 화면에 표시가 된다. 입력도 실제 본문이 아닌 별도의 영역에 입력을 하게 되어 있다. 본문이 실제로 없는데도 본문 아래에 있는 Post Navigation(이전글/다음글 표시)에는 목록이 보이고 있어 Post Navigation 영역을 추가로 수정하였다. 최근글 목록도 마찬가지.

functions.php 수정 – 이전 수정에 이어서 붙여넣으면 됨

// To ignore specific category in post navigation
if ( ! function_exists( 'vslmd_post_nav' ) ) :
/**
* Display navigation to next/previous post when applicable.
*/
function vslmd_post_nav() {
// Don't print empty markup if there's nowhere to navigate.
$previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, '', true );
$next     = get_adjacent_post( false, '', false );

if ( ! $next && ! $previous ) {
return;
}
$excluded_terms = array(91); // 91 is hidden and parents of 89 is quote, 90 is aside, parents category didnt work.
?>
<nav class="navigation post-navigation" role="navigation">
<h1 class="screen-reader-text"><?php _e( 'Post navigation', 'vslmd' ); ?></h1>
<ul class="pager">
<?php
previous_post_link( '<li class="previous">%link</li>', _x( '<span class="meta-nav">&larr;</span>&nbsp;%title', 'Previous post link', 'vslmd' ), false, $excluded_terms );
next_post_link(     '<li class="next">%link</li>',     _x( '%title&nbsp;<span class="meta-nav">&rarr;</span>', 'Next post link',     'vslmd' ), false, $excluded_terms );
?>
</ul><!-- .nav-links -->
</nav><!-- .navigation -->
<?php
}
endif;

//http://blog.grokdd.com/exclude-recent-posts-by-category/
//we should add '-' to exclude
function exclude_posts_from_recentPostWidget() {
    $exclude = array( 'cat' => '-91' );
    return $exclude;
}
add_filter('widget_posts_args','exclude_posts_from_recentPostWidget');

Line 1~27 : 테마의 기본 영역이 아닌 테마 내 플러그인의 template 파일(테마/inc/template-tags.php)에서 post_navigation을 불러오게 되어 있다. Line 20previous_post_link가 이전글의 정보를 가져와 내가 원하는 방식으로 화면에 뿌려주는 워드프레스의 기본 function이다. previous(next)_post_link function은 add_fiilter 후킹이 되지 않고, 내부의 previous_adjacent_post등은 후킹이 가능하나 excluded_terms이 설정되어 있지 않으면 이 함수를 거치지도 않는다. 또다른 함수 2개가 후킹이 가능한 것을 확인했으나, 이 둘은 database의 query를 건드리는 방식이라 너무 위험했다.

결국 template의 함수 영역을 통째로 function.php로 불러왔다. template에서의 함수는 if로 시작해서 endif;로 끝이 난다. 같은 구문이 function.php에 있으면 function.php의 것을 우선시하게 되어 있다. 실제 수정된 부분은 Line 14가 추가 되었고, Line 20previous_post_link$excluded_terms가 추가되었다. $excluded_terms는 실제 워드프레스 함수에 있는 argument이다.

‘인용’,’추가정보’를 각각 카테고리를 만들고 그 위에 상위 카테고리 ‘숨김’을 만들어 글 등록시 ‘숨김’과 ‘인용’ 또는 ‘숨김’과 ‘추가정보’를 모두 지정한다. ‘숨김’의 카테고리 번호가 91번이라서 array에 91을 넣었다. $excluded_terms에는 반드시 실제로 지정된 카테고리를 넣어야 한다. ‘숨김’이 ‘인용’의 상위 카테고리라고 하더라도 실제 글에서 ‘인용’만 체크되어 있으면 exclude 되지 않는다.

line 29~35 : 풋터에 있는 최근글 위젯에서 특정 카테고리를 없앤다. 관련 플러그인이 많지만 구글링해보니 간단한 필터로 적용이 가능했다. post_navigation과는 다르게 카테고리 번호에 -를 붙여야 exclude가 된다. 주석의 원문 블로그에 방문하면 post_navigation도 필터로 처리하는 함수를 찾을 수 있다.