워드프레스 카테고리 순서 변경, PHP 코드, 숏코드 생성

워드프레스 기본 카테고리 세팅은 뭔가 좋은 듯하면서 굉장히 불편하다. 특히 티스토리 라던지 다른 플랫폼을 이용한 사람들에게는 더욱 심한데, 표준형과 드랍다운 형식을 선택할 수 있고, 카테고리의 글 개수를 표시하거나 계층도(하위 카테고리가 오른쪽으로 한 계단 쏠려있는, 대댓글 같은 표현방식)를 표현하는 기능이 내장되어 있는 건 마음에 든다. 하지만 카테고리 순서를 임의로 바꿀 수 없다는 점과, 사이트의 아무 곳에나 붙여넣을 수 없다는 점이 치명적이다.

워드프레스 카테고리 순서 바꾸는 법

특히 카테고리 순서 같은 경우는, 여러 가지 이유들로 인해 반드시 필요한 기능이기 때문에 꼭 구현해야만 한다. 여러 가지 방법을 찾아봤지만 결국 가장 깔끔하고 안정적이며 속도에 크게 영향을 미치지 않는 방법은

Category Order and Taxonomy Terms Order” 플러그인을 사용하는 것이다.

워드프레스 관리자 화면에서 “플러그인” > “새로 추가” > “키워드” 란에 “Category Order and Taxonomy Terms Order” 를 검색해 설치한 후 활성화 시키면 된다.

그럼 워드프레스 관리자 화면 “글” 카테고리 하단에 “Taxonomy Order” 라는 메뉴가 생성되는데, 클릭해 들어가면 정말 직관적인 메뉴와 함께 클릭 드래그로 카테고리 순서를 바꿀 수 있다. 원하는대로 카테고리 순서를 드래그한 뒤 “Update” 버튼을 누르면 끝, 바로 적용되어 작동하는 모습을 볼 수 있다.

워드프레스 카테고리 PHP코드

그 다음 문제인 사이트에 아무 곳에나 붙여넣을 수 없다는 단점은 숏코드를 생성해 해결할 수 있다.

카테고리 메뉴는 PHP를 통해 불러올 수 있고, 이 PHP코드를 숏코드로 변환시켜 사용하면 된다. 카테고리의 기본 PHP 코드는 아래와 같다.

<?php the_widget('WP_Widget_Categories'); ?>

여기에 카테고리 옆 글 개수 카운트를 달고 싶다면 “count” 속성을 추가하면 된다. 변수값 0은 사용 안 함, 1은 사용함이다.

<?php the_widget('WP_Widget_Categories', 'count=1'); ?>

그 외에도 드롭다운을 표현하는 “dropdown” 속성과 계층도를 표현하는 “hierarchical” 속성이 있다. 모두 표현하려면 이런 식으로 적으면 된다.

<?php the_widget('WP_Widget_Categories', 'count=1&dropdown=1&hierarchical=1'); ?>

이 중 입맛에 맞게 골라 쓰면 된다. 원하는 페이지 어느 곳이던 그대로 삽입하면 된다.

워드프레스 카테고리 숏코드 만들기

다만 더욱 편하게 불러오거나, PHP가 구현 불가능한 페이지에선 숏코드를 생성해 불러올 수 있다. 카테고리 PHP를 숏코드 화 하는 방법은 “functions.php” 파일에 아래의 코드를 집어넣으면 된다.

add_shortcode( 'shot_code_category', 'Category_Widget' );
function Category_Widget(){
    $widget = "WP_Widget_Categories";
    $instance = array(
    );

    ob_start();
    the_widget( $widget, $instance);
    $return_data = ob_get_clean();
    return $return_data;
}

이게 기본형이고, 이 숏코드에도 위에서처럼 카운트, 계층도, 드롭다운 등을 표현하려면 아래처럼 변수를 집어넣으면 된다.

add_shortcode( 'shot_code_category', 'Category_Widget' );
function Category_Widget(){
    $widget = "WP_Widget_Categories";
    $instance = array(
    'count'    => '1',
    'hierarchical'     => '1',
    'dropdown'     => '1'
    );

    ob_start();
    the_widget( $widget, $instance);
    $return_data = ob_get_clean();
    return $return_data;
}

역시 입맛대로 선택하고, 원치 않는 속성은 지워버리면 된다.

이제 “add_shortcode” 바로 뒤에 지정한 이름이 숏코드 네임이 된다. 예시대로 라면 [shot_code_category] 라고 입력하면 바로 숏코드로 사용할 수 있다.