Archive for the ‘082NeT » wordpresstips’ Category

WP-SlimStat-Ex v2.1

Monday, November 16th, 2009

Skip to English document

미루고 미뤄오던 SlimStat-Ex의 새로운 버전을 공개하기로 했다. 오랜동안 만지작 사용하고 만지작 거리다보니, 욕심도 많아지고, 기능도 추가되어가면서 그에 따른 버그도 늘어가기만 해서 새로운 버전을 내놓기가 두려워지다보니 본의 아니게 너무 오랜동안 미루게 되었다.

나름 획기적이라 생각되는 것들을 넣어 봤으나, 실제 사용해 보니 어짜피 거기서 거기라는 느낌이 계속 든다. 조금씩 변형된 기능들을 계속 사용해 왔기 때문에 자신은 못느끼는 걸지도 모르겠다는 생각으로 스스로 위로하고 있는중…

추가, 변경된 내용들

  • 살짝 변경된 디자인
  • 통계 추적 방법 선택기능 추가. 모든페이지(기존방식), 블로그페이지, 블로그페이지 및 피드 세가지 중 택일.
  • MySQL 국가정보 DB 제거, GeoIP(MaxMind) 데이터 기본적용. PhpMyAdmin을 이용하여 기존의 국가정보 테이블(`wp_slim_countries`)을 삭제해도 무방함.
  • 관리자 화면에서 GeoIP 데이터파일(country 버전만) 업데이트 기능 제공(WP 2.8 이상에서만)
  • 필터(검색)에 날짜선택부분 추가(daterangepicker.jQuery.js 적용)
  • 차트(Open Flash Chart 2)보기 기능 추가
  • 기존의 대쉬보드, 설정패널의 하위에서, 독립된 패널로 분리 및 통합
  • 통계결과 더보기 버튼 제공하여 손쉽게 기본 정해진 출력갯수 이외의 결과 확인 가능
  • 새로운 브라우저, 운영체제, 모바일 등 추가
  • 동일 서버내 사이트 관리기능 추가(테스트용)
  • 외부 프로그램 추적방법 변경. 자세한 내용은 관리자 화면의 SlimStat > 외부 사이트 패널 참고.
  • 글 하단의 스크린샷 참고

처음 사용자를 위한 관련글

Change Logs

  • Little improved design.
  • Added option for choosing the way of track visitors. Entire blog(same as before), blog pages and blog pages + feed
  • Default IP-to-Country tool changed to GeoIP(MaxMind) and you can safely remove slimstat country table(`wp_slim_countries`) with PhpMyAdmin.
  • Supports updating GeoIP Data(country version only) from admin panel. (requires WP 2.8 or greater)
  • Added date filter(search) input powered by daterangepicker.jQuery.js
  • Supports Chart(Open Flash Chart 2) view mode.
  • SlimStat panel is separated from dashboard and it's options and admin tools moved to sub panel.
  • Now you can see more results than 'SQL limit rows' defined on options panel with 'next(previous) results' button.
  • Supports more browsers and mobile
  • Added panel for 'external sites(on same server)'(alpha state)
  • Changed the way to track external sites. See SlimStat > External Sites panel for details.
  • See Screenshots below.

Fist Install

스크린샷(Screenshots)

wp-slimstat-ex-01wp-slimstat-ex-02wp-slimstat-ex-03wp-slimstat-ex-04wp-slimstat-ex-05wp-slimstat-ex-06wp-slimstat-ex-07

메타블로그 위젯 플러그인 v0.2

Friday, November 6th, 2009

얼마전 공개했던 메타블로그 위젯 플러그인의 오류를 수정하고 다음뷰의 새로운 채널 및 API 정책을 적용하였다.

해결방법을 찾아보려 다음뷰 블로그의 API 관련 글들을 읽어보던 중, API 주소들이 변경된 내용과, 채널들이 일부 변경되었다는 내용을 발견…. (

다음뷰의 글에는 언급되지 않았지만, '블로그' 채널 또한 사라지고 '인터넷' 채널로 교체된것으로 보인다. 다행히 다음 측에서 '블로그' 채널로 발송한 트랙백을 '인터넷' 채널로 자동 송고하고 있는것으로 보이긴 하지만, 이전 버전의 플러그인에서 채널을 새로 업데이트 하지 않은 경우 '블로그' 채널에 송고했지만 표시는 '농구' 혹은 '책' 채널에 송고된 것으로 표시되는 이상한 상황이 연출될 수 있다. 하지만, 단지 표시만 그렇게 될 뿐 글의 발행은 제대로 된 것이니 걱정할 필요는 없다.

이전 버전의 플러그인을 통해 발송된 글의 경우에도 비슷한 상황이 유발될 수 있지만, 마찬가지로 표시만 이상하게 나올뿐 발행 자체에는 문제가 없으니 걱정하지 않아도 된다.

물론, 이 '표시' 자체가 거슬리는 경우에는, 새로운 버전에 추가된 '글 정보 다시 받기' 버튼을 이용해서 이를 해결 할 수 있다.

daumview_force_getpostinfo

이전 버전의 플러그인을 사용중인 분들 중 다음뷰를 활용하시는 분들께서는 꼭 새로운 버전으로 판올림 하시기 바랍니다. 판올림 하신 뒤에는 '메타블로그 위젯' 설정 페이지로 가셔서 상단에 있는 'Daum View 채널 새로고침' 버튼을 이용해 새로 변경된 채널을 받아오세요.

daumview_refresh_cats

또 한가지 변경사항으로, 플러그인 설치전에 이미 송고한 글의 처리 방식이다.

기존에는 일단 송고를 해 본 뒤, 중복글로 오류가 날 경우 다시 정보를 받아오는 방식이었으나, 'ssall'님의 오류보고를 참고하여 등록된 글인지 확인해 보는 기능을 추가하였다. (방법은 '플러그인 공개글' 참고)

daumview_getpostinfo1daumview_getpostinfo2daumview_getpostinfo3

플러그인 정보 보러 가기(설치 및 설정 등)

일부 호스팅에서 Apache 기능이 작동하지 않을때

Monday, October 26th, 2009

이번에 미리내에서 서비스하는 블로그 호스팅을 사용할 기회가 생겨, 여느때와 다름없이 워드프레스를 설치하고 이런 저런 설정을 해 보았으나, Permalinks(고유주소) 설정 부분에서 제시된 주소들이 좀 이상하게 표시되는 것이다.

http://some-domain.net/index.php/2009/10/27/sample-post/

즉, 요즘 워드프레스 버전에서는 찾아 볼 수 없는 '/index.php' 부분이 추가되어 보이더라는…

혹시나 mod_rewrite 모듈을 지원하지 않나 해서 phpinfo() 함수를 이용해 정보를 살펴보았지만, 해당 모듈이 버젓이 지원되고 있었다.

미심쩍은 내용이 혹시 없나 하여 살펴보니 'Apache Version' 이 'Microsoft-IIS/5.0' 으로 표시되고 있더라는… 혹시나 하여 apache_get_version() 함수를 사용해 보았으나, 결과는 마찬가지였다.

이 경우 워드프레스에서 $is_IIS, $is_apache 변수를 확인하여 작동하는 함수 혹은 페이지에서 지원하는 Apache를 내버려두고 지원하지 않는 IIS 를 지원하는 형태가 되어버려 여러가지 문제가 발생할 가능성이 있을 것이다.

현재 확인한 내용으로는 Permalinks(고유주소) 설정이 되지 않는것과, redirect_canonical(), wp_redirect() 함수가 제대로 작동하지 않는것이 있었다.

실수인지 의도적인 것인지를 알아보려 미리내측에 문의해 본 결과 그 답변은 아래와 같았다.

악의적으로 접근하는 사람들에게 혼란을 주기위해 일부러 표기해논 부분입니다.

오류발생시에도 Microsoft-IIS/5.0 로 확인되게 설정되어 있습니다.

뭐… 나쁜짓 하는놈들 막으려고 취한 조치라는데, 어쩔 수 없다 싶으면서도, 이것 때문에 헤맨 시간과 노력을 생각하면 기분이 언짢기도 하다.

어쨓든, 이를 워드프레스에서 해결하기 위한 플러그인을 만들어 보았으니, 같은 문제로 고민중에 있는 분들께서는 사용해 보시고 문제가 해결되는지 확인해 주셨으면 합니다. -)

메타블로그 위젯 플러그인

Saturday, September 12th, 2009

메타블로그류의 서비스에서 제공되는 멋진 위젯들을 워드프레스 블로그에 자동으로 출력해주는 플러그인.

아직은 테스트용 베타버전이라 예상치 못한 오류가 발생할지도 모릅니다. 플러그인 사용중 오류 발생시 사용환경과 오류내용을 되도록 자세히 알려주시면 플러그인 개발 및 오류수정에 큰 도움이 됩니다. 부탁드립니다 -)

알림

고마움

  • 다음뷰의 경우 외부블로그는 다음뷰의 글 관리 페이지에서 직접 글을 등록해야하며, 각 글마다 위젯의 값이 달라지는 점때문에 난감해 하던 차에, '엽기민원의 場' 블로그에 공개된 텍스트큐브용 다음뷰 플러그인을 만나게 되었다. 그야말로 어둠속의 한 줄기 빛 ㅠㅠ (고맙습니다!!)
  • 다음뷰의 API 용 XML 을 분석하는데는 텍스트큐브용 플러그인에 사용된 텍스트큐브의 라이브러리중 'XMLStruct'를 가져와서 사용함.

설치

  • 이 글 하단에 있는 다운로드 링크를 통해 받은 파일의 압축을 풀면 나오는 'metablog-widgets' 폴더를 'wp-content/plugins' 폴더에 넣어줌.
  • 플러그인 관리 패널에서 '메타블로그 위젯' 플러그인을 활성화.

설정 및 사용

  • '설정 > 메타블로그 위젯' 패널로 이동하여 해당 블로그에 맞게 설정값들을 입력해 줌.
  • 현재는 다음뷰, 믹시, 올블로그(올블릿) 세가지 위젯 서비스를 지원하며, 플러그인을 사용하기 전에 각각의 서비스에 가입이 되어있어야 함.
  • 다음뷰의 경우, 글을 공개할 때 '글 보내기'를 선택하고 글을 보낼 채널을 선택한 뒤 공개해야만 다음뷰에 글을 등록하게되며, 글이 성공적으로 다음뷰에 등록되었을 경우에만 위젯이 표시됨.




티스토리, 다음뷰와의 트랙백 송수신 문제

Saturday, September 12th, 2009

스팸이나 해킹등의 '나쁜 짓' 들을 효과적으로 막아주는 워드프레스 플러그인 'bad-behavior'를 사용중이라면, 티스토리(tistory)에서 보내는 트랙백이 제대로 받아지지 않으며, 다음뷰(Daum View)에 트랙백을 통해 글을 보낼 때 오류가 발생하게 된다.

두 경우 모두 막히는 원인은 bad-behavior 에서 지정한 '일반적인' 접속 규격 중 요청된 헤더에 'Accept' 요소가 빠져있기 때문이라는…

daumview-trackback-block-log

해당 부분(Accept 헤더 체크)을 확인하지 않고 그냥 통과하도록 수정 할 수도 있겠지만, 이럴경우 같은 규격 오류로 막는 '나쁜 접속'들 마저 허용하게 되어버리게 되므로, 다른 방법을 찾아보기로 했다.

가장 확실한 방법은 티스토리에서 트랙백을 보내는 아이피 대역과, 다음뷰에 글 등록시 다음뷰에서 해당글의 주소가 실제로 존재하는지 확인하는 서버의 아이피 대역을 '신뢰 목록(whitelist)'에 추가하여 무조건 통과시키도록 하는 것이다.

아래의 예시에서는 대충 예상되는 아이피 대역을 적용한 것입니다. 이 외의 아이피로 보낸 트랙백이나 접속은 여전히 차단 될것입니다.
티스토리의 트랙백 전송용 아이피 대역이나, 다음뷰 URL 확인용 서버의 아이피 대역을 알고 계신분 안계신가요~?

해결방법

  • wp-content/plugins/bad-behavior/bad-behavior 폴더 안에있는 'whitelist.inc.php' 파일을 텍스트 에디터로 열어 17번줄 부근에 아래와 같이 아이피 대역을 추가한다.
  •  $bb2_whitelist_ip_ranges = array( 
      "64.191.203.34", // Digg whitelisted as of 2.0.12 
      "208.67.217.130", // Digg whitelisted as of 2.0.12 
      "10.0.0.0/8", 
      "172.16.0.0/12", 
      "192.168.0.0/16", 
      "211.172.252.0/24", // 티스토리 트랙백 
      "222.231.50.0/24", // 다음뷰 URL Checker 
    //  "127.0.0.1", 
     );
  • 위의 예에서 "211.172.252.0/24" 는 "211.172.252.0 ~ 211.172.252.255" 대역을 의미한다.(CIDR 관련 도표 참고)

워드프레스 2.7에서 댓글과 트랙백을 분리하여 출력

Thursday, April 30th, 2009

얼마전 등록한 워드프레스 2.7 이후의 댓글 출력 환경글에서 나아가 좀 더 입맛에 맞는 댓글 출력 환경을 제공하는 몇가지 방법을 소개해 보려 한다.

관련 글

  1. 워드프레스 2.7 이후의 댓글 환경 첫번째
  2. 댓글과 트랙백(핑백)의 분리(현재 글)
  3. 댓글 페이지 탐색을 번호로 표시하기(준비중)
  4. Rely(응답) 링크 자바스크립트 적용(준비중)

댓글과 트랙백의 분리

아직은 구현하는데 불편함이 있어 일반 이용자 보다는 테마제작자에게 그 기능을 활용 할 것을 제안하고 있다는 느낌을 주고 있는 기능이 있는데, 그 중 개인적으로 관심이 가는 것은 댓글과 트랙백(핑백)을 나눠주는 기능이다.

wp_list_comments() 함수를 살펴본 적이 있다면 알 수 있듯이, 함수 자체에서도 일반 댓글과 트랙백 중 원하는 것만 출력해 줄 수 있는 'type' 이라는 설정변수를 가지고 있다.

 $defaults = array('walker' => null, 'max_depth' => ", 'style' => 'ul', 'callback' => null, 'end-callback' => null, 'type' => 'all', 
  'page' => ", 'per_page' => ", 'avatar_size' => 32, 'reverse_top_level' => null, 'reverse_children' => ");

또한, 댓글 템플릿을 불러오는 comments_template() 함수에서도 댓글을 종류별로 분리할 것인지를 지정하는 설정변수가 존재한다.

function comments_template( $file = '/comments.php', $separate_comments = false ) {

즉, 따로 플러그인을 만들거나 함수를 만들지 않아도 기본적으로 댓글과 트랙백을 분리 할 수 있는 것이다.

이제, 댓글과 트랙백을 분리하는 작업을 시작해 보기로 하자.

single.php(page.php) 파일 수정

우선, 템플릿 파일('/comments.php')파일을 불러 올 때, 댓글과 트랙백을 분리해서 출력할지도 모르니 댓글들을 미리 분리해 놓으라고 해 둘 필요가 있다. 물론 미리 말 해 두지 않아도 되지만, 미리 지정해 두는게 좋다.

여기서는 single.php 만을 설명하지만, 사용중인 테마의 템플릿 파일들중 함수가 포함된 파일이 있다면 모두 수정하도록 한다.

single.php 파일을 열어 <?php comments_template(); ?> 부분을 찾아 아래와 같이 수정한다.

<?php comments_template(", true); ?>
comments.php 파일 수정

우선 지난 글에서 댓글 목록 출력부분을 2.7에 맞게 수정하였다면 아래와 같을 것이다.

 <ol class="commentlist"> 
 <?php wp_list_comments(); ?> 
 </ol>

이 목록에서는 우선 댓글만 출력하기로 하고 아래와 같이 type 변수를 추가한다. 테마에 따라서 기본적으로 다른 설정 변수가 있을 수도 있으나.

 <ol class="commentlist"> 
 <?php wp_list_comments('type=comment'); ?> 
 </ol>

이제 그 아래 또는 위 중 원하는 곳에 트랙백(핑백)의 목록을 출력하는 내용을 추가하면된다. 참고로, 핑백과 트랙백 또한 분리하여 출력 할 수 있지만 여기서는 두가지를 함께 출력하기로 하자. (핑백: type=pingback, 트랙백: type=trackback, 핑백+트랙백: type=pings)

 <ol class="pinglist"> 
 <?php wp_list_comments('type=pings'); ?> 
 </ol>

'ol'의 클래스(class)를 지정할 때 댓글 목록과 트랙백(핑백) 목록을 똑같이 출력하려면 댓글과 같이 class="commentlist" 라고 지정하면 되지만, 이와 다르게 출력하려면 class="pinglist" 와 같이 구분하여 줄 필요가 있다.

여기서 생각해 봐야 할 문제가 생긴다. 보통은 if (have_comments()) 조건을 통해서 댓글이 존재하는지 확인하고 없다면 'No comments(댓글이 없습니다)' 등의 문구를 표현하는데, 댓글과 트랙백(핑백)을 분리해 놓았으니, 각각에 내용물이 있는지를 또 확인해 줘야만 한다는 것이다.

예를들어 해당 글에 댓글은 없고 트랙백만 존재한다면 댓글 목록 부분은 HTML 에러를 발생하면서 목록을 감싸주는 태그만 덩럴 남아있게 되는 것이다.

 <ol class="commentlist"> 
 </ol>

이 문제를 해결하기 위해서, 댓글 목록 출력 부분과 트랙백(핑백)목록 출력 부분을 아래와 같이 조건을 붙여 감싸준다.

 <?php if (!empty($wp_query->comments_by_type['comment'])) { ?> 
 <ol class="commentlist"> 
 <?php wp_list_comments('type=comment'); ?> 
 </ol> 
 <?php } ?> 
 
 <?php if (!empty($wp_query->comments_by_type['pings'])) { ?> 
 <ol class="pinglist"> 
 <?php wp_list_comments('type=pings'); ?> 
 </ol> 
 <?php } ?>

여기까지만 해도 일단, 댓글과 트랙백(핑백)이 분리되어 표시되긴 하지만, 아직은 살짝 모자란 감이 있는 듯 하다. 우선, 댓글은 등록자가 사람이고? 트랙백(핑백)은 등록자가 어떤 사람이 등록한 이 되기 때문에, 댓글 등록자의 이름 부분이 상대적으로 굉장히 길어지는 경우도 많고, 내용 또한 그러하다.

트랙백(핑백) 목록 출력 방식 변경

wp_list_comments() 함수에서는 목록의 출력을 좀 더 유연하게 하기 위하여 callback, end-callback 설정 변수를 제공하고 있다. 이 변수에 자신이 등록한 함수의 이름을 등록하면, 목록내의 개별 댓글의 출력 방식을 자신의 함수로 대체 할 수 있게된다.

우선 개별 트랙백(핑백)의 출력 내용이 간단하게 아래와 같다고 가정해 보자.

<li>트랙백 발송한 블로그 | 트랙백 등록시간 | 편집</li>

pinglist-kiss-theme-082net

사용중인 테마폴더에서 functions.php파일을 열어(없다면 새로 한 만들면 된다.) 맨 아래에(또는 원하는 곳에) 아래와 같은 새로운 함수를 하나 추가한다.
(함수 이름은 입맛에 맞게 지정해 주면 됨)

function my_theme_ping_start_el($comment, $args = array(), $depth = 1) { 
 global $user_ID; 
 $GLOBALS['comment'] = $comment; 
 extract($args, EXTR_SKIP); 
 ?> 
 <li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>"> 
 <span><?php comment_author_link() ?> |  
 <?php if ($comment->comment_approved == '0') { ?><em>Your comment is awaiting moderation.</em><?php } ?> 
 <a href="#comment-<?php comment_ID() ?>" title="Permallink to this comment"><?php comment_date('F jS, Y') ?>, <?php comment_time() ?></a></span>  
 <?php edit_comment_link('Edit','| <span class="editcomment">','</span>'); ?> 
<?php 
}

이제, wp_list_comments 함수에 자신이 등록한 함수를 callback 변수에 넣어주면 된다.

 <ol class="pinglist"> 
 <?php wp_list_comments('type=pings&callback=my_theme_ping_start_el'); ?> 
 </ol>

좀 더 자신의 입맛에 맞게 바꾸려면 워드프레스 댓글 템플릿 함수 페이지를 참고해서 도전해 보세요.

Advanced Spoiler 플러그인

Friday, April 24th, 2009

기존의 Ajax-Spoiler 플러그인의 이름을 Advanced-Spoiler 로 바꾸었다. AJAX 가 뭔지도 제대로 알지 못하던 때에 만든 플러그인이라, 무심코 붙인 이름이었는데 아무래도 그 기능에 있어서 오해를 불러일으키는 경우가 계속 발생할 듯 해서 큰 마음을 먹고 바꾸게 되었다.

이름만 바뀐건 아니고, 몇가지 기능을 추가하고 설정 페이지를 만들어 두기도 했다.

요구사항 및 기능

  • 워드프레스 2.7 이상
  • TinyMCE, Quicktags 에 spoiler 버튼이 추가되어 에디터 상에서 쉽게 스포일러를 추가 가능.
  • 간단(Simple) 모드를 지원하여 효과를 사용하지 않는 간단한 스포일러를 사용할 수 있슴.
  • 그 외의 기능은 기존 Ajax-Spoiler 플러그인과 거의 동일함.

설치

  • 압축을 푼 'advanced-spoiler' 폴더를 wp-content/plugins 폴더에 업로드
  • '관리자 화면 > 플러그인' 에서 활성화
  • '관리자 화면 > 설정 > Advanced Spoiler' 에서 자신에 맞게 설정

사용

  • 글 작성 시 숨겨두고 싶은 부분을 [spoiler] [/spoiler] 로 감싸줌.
    아래 내용은 클릭하면 보입니다. 
    [spoiler]숨기고 싶은 내용[/spoiler] 
    나머지 내용들…
  • 단락을 드래그 하여 선택한 뒤 스포일러 아이콘(+-)을 클릭하면 관련 설정 창이 나타남.
    • TinyMCE:
      tinymce-spoiler-button
    • Quicktags:
      quicktags-spoiler-button
  • 효과, 문구 등을 기본 설정과 다르게 하려면 각각의 설정을 변경하고, 아니라면 그냥 'Okay' 버튼을 누르면 됨

설정

  • 모드: '심플'을 선택하면 효과 없이 바로 보여주거나 감춤.
  • 피드 가시성: 피드를 통해 글을 볼 때 감춰진 내용을 보여줄지 감출지를 결정.
  • 보이기 문구, 감추기 문구: 스포일러 버튼에 표시될 문구를 적어줌.
  • 기본 효과: 기본으로 사용 할 효과 선택.
  • 효과 속도: 효과의 진행 속도 선택. 숫자가 작을수록 빠름.
  • 중복 허용: 스포일러 안에 또 다른 스포일러를 사용하고 싶다면 '예(Yes)'. 단, 사용하지 않을 때 보다 조금이나마 느려질 가능성이 있슴.

사용 예

  • blind 효과:
    • [[Visit blog to check out this spoiler]]

    • [spoiler effect="blind"]<img src="http://082net.com/wp/wp-content/uploads/2009/04/gravatar.jpg" alt="gravatar" title="gravatar" width="240" height="224" class="alignnone size-full wp-image-967" />[/spoiler]
  • appear 효과:
    • [[Visit blog to check out this spoiler]]

    • [spoiler effect="appear"]<img src="http://082net.com/wp/wp-content/uploads/2009/04/gravatar.jpg" alt="gravatar" title="gravatar" width="240" height="224" class="alignnone size-full wp-image-967" />[/spoiler]
  • slide 효과:
    • [[Visit blog to check out this spoiler]]

    • [spoiler effect="slide" show="보이기 문구" hide="감추기 문구"]<img src="http://082net.com/wp/wp-content/uploads/2009/04/gravatar.jpg" alt="gravatar" title="gravatar" width="240" height="224" class="alignnone size-full wp-image-967" />[/spoiler]
  • apblind 효과:
    • [[Visit blog to check out this spoiler]]

    • [spoiler effect="blind"]<img src="http://082net.com/wp/wp-content/uploads/2009/04/gravatar.jpg" alt="gravatar" title="gravatar" width="240" height="224" class="alignnone size-full wp-image-967" />[/spoiler]
  • simple: (심플모드와 동일함)
    • [[Visit blog to check out this spoiler]]

    • [spoiler effect="simple"]<img src="http://082net.com/wp/wp-content/uploads/2009/04/gravatar.jpg" alt="gravatar" title="gravatar" width="240" height="224" class="alignnone size-full wp-image-967" />[/spoiler]

워드프레스 사이트에 등록되기 전까지 우선 사용되는 내려받기 링크

워드프레스 2.7 이후의 댓글 출력 환경

Monday, April 20th, 2009

워드프레스 2.7 이후부터 거의 모든 댓글 출력 환경이 API화 되었다. 다른 이유보다는 계단형 댓글, 페이지로 나뉘는 댓글을 지원하기 위함이 가장 큰 게 아닌가 생각된다. 이제는 특별한 플러그인 없이도 이러한 기능들을 쓸 수 있다니 정말 반가운 일이 아닐 수 없다.

다만, 사용중인 테마가 새로운 댓글 출력 환경을 지원해야만 한다는 어쩔 수 없는 단점이 있다. 물론, 취향에 따라 자주 테마를 바꾸는 블로거들도 많지만, 본인과 같이 한번 정하면 어지간하면 테마를 바꾸지 않는 경우도 많을 것이다. 이러한 경우 욕심을 버리고 종전처럼 새로운 기능들을 제외하고 블로그를 운영한다면 문제가 되지 않겠지만, 사람의 욕심이란게 있다는걸 알면서 썪혀두기에는 좀 넘치는 경향이 있는 듯 하다.

물론 가장 권장하는 방법은, 해당 테마의 제작자에게 워드프레스 2.7의 댓글 환경을 지원해 줄 것을 요청하거나, 구글 등의 검색엔진에서 '테마이름 wordpress 2.7' 등의 검색어를 통해 누군가 제작 해 놓은 패치를 찾아서 적용하는 것이다.

하지만, 부득이 한 경우나 이번 기회에 한 번 이런 작업에 도전해 보고 싶은 블로거라면 낯선 단어들과 용어들을 살짝 견뎌가면서 함께 해 봤으면 좋겠다.

아래 설명되는 내용은 HTML 이나 PHP에 익숙하지 않은 사람에겐 다소 어려운 것들이겠지만, 이번 기회에 하나 하나 차분히 살펴본다면, 앞으로 워드프레스를 백배 활용하는데 큰 도움이 될거라 자부한다.

우선, Octto씨가 이미 잘 정리해 둔 글이 있으니, 영어에 익숙한 분들께서는 참고하시길 바란다.

새로운 템플릿 함수들

  • post_password_required: 비밀번호가 걸린 글인지 확인하는 함수
  • wp_list_comments: 댓글들을 출력하는 함수
  • have_comments: 글에 댓글이 존재하는지 확인하는 함수
  • previous_comments_link: 페이지로 나뉜 댓글을 이동하는 함수(이전 페이지)
  • next_comments_link페이지로 나뉜 댓글을 이동하는 함수(다음 페이지)
  • paginate_comments_links페이지로 나뉜 댓글을 이동하는 함수(페이지 번호 표시)
  • comments_open: 댓글기능이 열려있는지 확인하는 함수
  • comment_form_title: 전체 댓글 목록의 제목을 표시하는 함수
  • comment_reply_link: 댓글에 답글을 달기위한 링크 출력 함수
  • cancel_comment_reply_link: 답글을 취소하기 위한 링크
  • comment_id_fields

기존의 댓글 템플릿 파일(comments.php)을 수정해서 사용하는 방법도 있지만, 워낙에 여러 부분에 손을 대야 하므로, 워드프레스 버전에 따라 템플릿 파일을 다르게 불러오도록 하는 과정이 필요하다.

기존 파일을 백업하고, 워드프레스 2.7 이전버전에 대응하도록 함

  1. 테마 폴더 안에 있는 comments.php 파일의 복사본을 만들어 legacy.comments.php 라고 이름을 지정해 둔다.

    과정 보기 »

  2. 테마폴더 안에 function.php 파일을 열어본다. (없다면 새로 만들면 된다)

    새로 만드는 과정 »

  3. 파일의 맨 위 또는 맨 아래에 아래와 같은 내용을 추가해 둔다.
    <?php 
    add_filter('comments_template', 'legacy_comments_loader'); 
    function legacy_comments_loader($file) { 
     if ( !function_exists('wp_list_comments') )  
      $file = TEMPLATEPATH . '/legacy.comments.php'; 
     return $file; 

    ?>
  4. 이제, 수정하기 이전의 파일은 legacy.comments.php 로 저장되어있고, 앞으로 수정할 파일은 comments.php 파일이 된다.

이제 준비는 완료되었으니, 실질적인 수정작업을 시작하기로 하며, 과정은 다음 페이지에서 계속 이어진다.

페이지 템플릿에서 댓글을 지원하게 하기

Saturday, April 18th, 2009

일반적으로 워드프레스의 테마들은 페이지 템플릿에서 댓글을 지원하지 않는 경우가 많다. 일단, default 테마만 봐도 이러한 경우에 속한다.

물론, 워드프레스에서의 고정 페이지 개념을 생각한다면 당연한 것이겠지만, 가끔 페이지에서도 댓글 기능이 필요할 때가 있다. 방명록 페이지의 경우가 그 대표적인 예가 아닐까 한다.

아래 설명될 내용에서는 워드프레스의 Default 테마를 대상으로 할 것이며, 따로 댓글을 지원하는 페이지 템플릿을 만들기 보다는 기존의 템플릿을 수정하여 댓글을 지원하기도 하고, 안하기도 하도록 하겠다.

시작하기 전에

  • 우선, 사용중인 테마에서 댓글을 지원하는 페이지 템플릿을 이미 지원하고 있다면 애써 새로운 템플릿을 만들 필요가 없으므로 한 번 확인해 봐야 한다.

    확인하는 과정 보기 »

페이지 템플릿(page.php) 수정하기

  • 우선 single.php 파일을 열어 comments_template() 함수가 endwhile; 과 비교해서 어디쯤에 사용되고 있는지를 확인한다. Default 테마의 경우는 endwhile; 구문 바로 위에 표시되어 있다.
    comments_template-position
  • 이제 page.php 파일(기본 페이지 템플릿)을 열어 같은 위치에 comments_template() 함수를 넣어주면 된다.
    edit-page-template
  • 위 과정까지만 해도 페이지에서 댓글을 지원하게 되긴 하였지만, 댓글을 지원하지 않는 페이지도 만들려면 조건문을 하나 추가해 두는게 좋다. 최근 K2에서 사용하는 방식을 인용하여 사용자 정의 값(custom field)에 'comments' 가 존재한다면 댓글을 지원하도록 한다.
    edit-page-template-w-if
  • 이제 page.php 파일을 저장하고 다시 업로드하여 덮어 씌워면 된다.

댓글을 지원하는 페이지 작성하기

  • 새 페이지를 작성하는 화면으로 이동하여, 적당한 제목과 내용을 입력 한 뒤, '사용자 정의 필드(Custom Fields)' 부분을 입력할 준비를 한다. 만약 박스가 접혀있다면 클릭해서 열어주면 된다.
  • '새로 입력(Enter New)' 링크를 클릭하면 새로운 사용자 정의 필드를 추가할 수 있도록 바뀐다.
    custom-fields-add-new-beforecustom-fields-add-new-after
  • 한번이라도 같은 이름의 사용자 정의값을 적용한 적이 있다면, 이후에는 기존의 것들 중에서 선택 할 수도 있다.
    custom-fields-select
  • 사용자 정의 필드의 '이름(Name)' 부분에 'comments' 라고 입력하고 '값(Value)' 부분에 '1' 을 입력한 뒤 '사용자 정의 필드 추가(Add Custom Field)' 버튼을 누르면 새로운 값이 추가된다. 여기서 주의할 점은 글을 한 번 저장하기 전까지는 해당 사용자 정의 값은 임시로만 추가 되는 것이라는 점이다.
    custom-field-added
  • 이제, 페이지를 저장하고 공개하면 댓글 입력창이 표시되는 페이지를 확인 할 수 있다.
    publish-guestbook-page1

워드프레스 2.7에서 방명록 만들기

Saturday, April 18th, 2009

이 블로그에서 몇번쯤인가 언급했지만, 워드프레스 2.7에서는 TP-Guestbook플러그인 등 방명록 관련 플러그인이 딱히 필요하지 않게 되었다.

본인도 이번 블로그 정리를 진행하기 전까지는 워드프레스 2.7의 댓글 시스템을 꽤 생소하게 느꼈던 바가 있어, 이 블로그의 방명록을 2.7에 맞게 바꾸면서 새로 알게 된 점들을 한 번 정리해 보기로…

시작 전 준비사항

  1. 우선, 플러그인은 따로 필요치 않지만 다른 페이지들과 방명록 페이지에서 댓글이 출력되는 방식을 다르게 하고 싶다면(페이지당 갯수, 정령방식 등등) 얼마전 공개한 Per-Post-Comment-Settings(이하 PPCS) 플러그인을 사용하면 된다.
  2. 두번째로는 현재 사용중인 테마가 워드프레스 2.7 이후의 댓글 시스템을 지원해야만 하며, 지원 여부는 사용중인 테마 폴더의 comments.php 파일에서 wp_list_comments 함수가 사용되었는지를 확인하면 된다.
    • 만약 테마가 2.7 이후의 댓글 시스템을 지원하지 않는다면, 해당 테마 제작자에게 지원하도록 요청하거나, 직접 테마를 수정하는 방법이 있다.
    • 사용중인 테마를 2.7에 맞게 수정하는 방법에 대해서 이 글에 함께 설명하기에는 무리가 있어 조만간 따로 글을 작성할 생각이긴 하지만, 되도록이면 테마 제작자에게 요청하는것이 가장 좋은 방법이 될 듯 하다.
  3. 테마의 기본 페이지 템플릿에서 댓글 출력을 지원하고 있는지를 확인해 봐야 한다.
    • 페이지 템플릿에서 댓글을 지원하지 않는다면, 간단하게 수정하여 댓글을 지원 하도록 할 수 있다.
    • 이 방법 또한 알고보면 별것 아닌 간단한 수정이지만, 익숙하지 않은 이들에게는 난감하고 머리아픈 일이 될 것임에 분명하기에 조만간 따로 글을 작성을 계획하고 있다. (혹시 잘 정리된 글이 있다면 알려주세요)

워드프레스 2.7 이후의 댓글 시스템을 지원하고, 페이지 템플릿에서 댓글을 지원하는 테마를 사용중이라면 위 준비과정은 전혀 필요치 않은 내용이니 그냥 무시하고 아래 과정을 진행하면 된다.

방명록으로 사용할 페이지 만들기

  1. 관리자 화면에서 '새 페이지' 링크를 통해 페이지 만드는 화면으로 이동한다.
    create-new-page-link
  2. 글 제목에 적당한 이름(아마도… '방명록')을 적어준다.
    write-guestbook-title
  3. 방명록에 대해 소개하고 싶은 글이 있다면, 적당한 내용을 적어준다. (비워둬도 무방함)
    text-for-guestbook
  4. 기본 페이지 템플릿이 아닌 다른 템플릿에서 댓글을 지원한다면 해당 템플릿을 선택해 준다.
    select-page-template
  5. 만약 K2 SVN 버전을 사용하고 있다면 사용자 정의 필드에서 Name 에 'comments' Value 에 '1' 을 넣어주면 해당 페이지에서 댓글을 지원하게 된다.
    custom-filed-comments
  6. PPCS 플러그인을 사용하고 있다면, 방명록에 맞게 댓글의 설정을 바꿔준다.
    adjust-ppcs-settings
  7. 페이지를 공개하기 전에 '임시글로 저장하기' 버튼을 눌러 일단 저장해 둔다.
    save-guestbook-draft
  8. 페이지의 주소를 제목과 다르게 하고 싶다면, 고정주소 부분에서 변경해 준다.
    edit-guestbook-slug
  9. 모든 기본적인 설정을 마쳤으므로 '공개하기' 버튼을 눌러서 페이지를 공개하면 된다.
    publish-guestbook-page

WP-Scripts 플러그인 업데이트

Saturday, April 18th, 2009

워드프레스 2.1 이후 포함된 script-loader 로 인해 쓸모가 없어져서, 개인적인 용도로만 수정해서 사용해 오던 플러그인을 이번에 블로그를 정리하면서 몇몇 점들을 보완해서 공개하기로 했다.

기능에 대해서 이래저래 설명하는 것 보다는 몇개의 스크릿샷으로 대체하는게 효율적일 듯 하다.

요구사항

  • 이 플러그인은 워드프레스 2.6 이상에서만 작동함.

스크린샷

  • 독립형
    wp-scripts-general
  • 의존형
    wp-scripts-dependencies
  • 스크립트를 선택하면 필요한 나머지 것들이 자동으로 선택 됨
    wp-scripts-check-dependent
  • 스크립트를 선택해제하면 그에 의존하는 스크립트들이 선택해제 됨
    wp-scripts-uncheck-top-level

부가기능

  • lightbox, slimbox, thickbox 등의 이미지 오버레이 도구를 사용하게 되면, 본문의 이미지 링크들에 해당 값들이 자동으로 적용됨.
  • thickbox를 선택 한 경우는<?php wp_loginout(); ?> 함수를 사용 할 때 로그인 링크가 thickbox와 연동됨.

Per Post Comment Settings 플러그인

Monday, April 13th, 2009

TP-Guestbook 플러그인이 워드프레스 2.7 이후 쓸모가 없어짐에 따라 기존에 사용하던 몇가지 기능들을 계속 유지하기 위해서 각 글 또는 페이지 별로 댓글의 설정을 바꿀 수 있는 플러그인을 만들어 봤다.

플러그인의 기능을 설명하기 위해 우선 워드프레스의 댓글 관련 설정들을 살펴보자면

  • wordpress-other-comment-settings
  • 가입한 회원만 댓글을 달 수 있게 한다거나,
  • 공개한지 일정 기간이 지난 글의 댓글을 닫는다거나,
  • 답글에 답글을 달 수 있는 깊이의 한계를 지정한다거나,
  • 지정된 갯수를 기준으로 댓글을 페이지로 분리한다거나,
  • 댓글의 정렬 순서를 바꾼다거나,
  • 먼저 표시될 페이지(첫번째 혹은 마지막)를 지정 할 수 있다.

Per Post Comment Settings 플러그인은 이러한 설정들을 각각의 글 또는 페이지 별로 다르게 설정 할 수 있게 해 준다.

per-post-comment-settings

블로그 정리

Sunday, April 12th, 2009

오랜만에 블로그를 정리했다. 미루고 미뤄오던 2.7로의 판올림, 테마 수정 등등등…

다른 것들 보다도, 댓글 시스템의 변경이 가장 심적이 부담이 되어 기존 tp-guestbook 플러그인을 정리해고 시키고, 글(페이지)마다 댓글 시스템을 정리할 수 있는 "Per Post Comment Settings"란 플러그인을 간단하게 만들어 적용시키기는 했는데, 현재 사용중인 Kiss 테마가 2.7의 방식을 지원하지 않는 바람에 이것 저것 손대다 보니 하루 종일 붙들고 있게 되었다는… -_-;

게다가 워낙에 오랜만에 하는 정리이다 보니, 평소에 미뤄왔던 산더미 처럼 불어버린 'TO DO' 목록을 걸러내고 걸러냈슴에도 여전히 산… 또 다시 '에고… 기냥 다음에 시간 날 때 하자…' 의 유혹이 밀려왔으나 가까스로 물리쳤다… 휴…

대충 한 것들을 정리해 보려 하는데, 그새 뭐 했는지 까먹은게 많아서리… 이것도 힘드네… 흑..

삽질 내역

  1. WP 2.7 이후용 Per Post Comment Settings 제작
  2. Kiss 테마 댓글 시스템 2.7에 맞게 수정.(K2로 옮겨가려다가 결국 포기…흑..)
  3. K2-SMB 포기하고 최근 K2에 포함된 K2-Widgets-Manager 플러그인화하여 적용. 하는김에 Aj-Spoiler를 이용한 접히는 기능을 쉽게 적용하기 위한 내용도 적용.
  4. 맘에 안드는 기본 위젯들 제거하고, 새로운 위젯들을 한번에 등록하기 위해 'Extended-Widgets' 제작 및 적용( 아마도 미공개… 워낙에 개인취향에 맞게 만든 놈이라 -_-; )
  5. 워드프레스 업데이트 관련 기능들을 제거하는 플러그인 'Disable Wordpress Features' 제작 및 적용. Core 업데이트, Plugin 업데이트, Theme 업데이트 기능. (기냥 관리자 화면 느린게 싫어서… 다른 이유는 없슴)
  6. 테마 정리하는김에 글꼴 크기 정리하고, 기본 글꼴에 '맑은고딕' 추가.
  7. Meta 버튼 몇가지 수정.
  8. ClickToCopy 플러그인이 FireFox 3 에서 작동하도록 수정.
  9. 그 외에 지금은 기억이 안나는 몇가지 것들… ^^;

나름 이것 저것 많이 한 것 같은데, 막상 블로그를 보니 변한게 글꼴밖에 안보이네… 하하

워드프레스 EUC-KR 트랙백 플러그인 v0.3

Tuesday, July 29th, 2008

몇일전 공개한 '워드프레스 EUC-KR 트랙백 플러그인'을 조금 새롭게 했습니다.

기존에는 트랙백을 받을 때, 우선 DB에 입력한 뒤 다시 해당 트랙백을 다시 수정하는 방식을 사용했었죠. 이 방식에 약간의 문제가 있어서(거의 문제는 없지만), 트랙백을 최초 받아들이기 전에 문제를 유발하는 값을 조정하는 방식으로 바꿨습니다.

'워드프레스 EUC-KR 트랙백 플러그인' 받으러가기.

WP-SlimStat-Ex v2.0

Saturday, July 26th, 2008

Go to English document

정말 오랜만에 새로운 판을 내놓게 되었네요. 거두절미하고 바뀐내용들을 설명하겠습니다.

하고픈 말

  • 2.0 부터는 워드프레스 2.5 이상에서만 작동하며, 기존 1.6x 버전의 지원은 생각하지 않고 있습니다. 여러가지 이유가 있지만, 굳이 설명하지는 않기로 했습니다 -(
  • 워드프레스 2.5 이전 버전을 사용중인 분께서는 1.6버전을 사용하시기 바랍니다.

바뀐내용

  • 좀 더 많은 웹브라우저를 인식합니다.
  • PHP 5.0 이상에서 curl 모듈이 설치되었다면 GeoSlimStat에서 curl_multi 기능을 이용하여 빠른 속도로 지역정보를 얻어올 수 있습니다.
  • Whois 정보 DB(dnsstuff 또는 ip-lookup)를 선택할 수 있는 설정을 추가했습니다.
  • MaxMind에서 제공하는 GeoIP 데이터베이스(city 또는 country)를 지원합니다.
  • 사용자 등급(Role)별 통계추적, 통계보기, 설정관리 권한을 지원합니다.
  • 리소스 정보관련 문제를 해결하기 위해 관련 테이블을 업데이트 합니다.
  • wp-shortstat, wp-slimstat 으로부터의 업그레이드를 더이상 지원하지 않습니다.
  • 워드프레스에서 제공하는 플러그인 자동 업그레이드 기능을 지원합니다만, 아직 완전하지 않으므로 되도록 기존의 수동 업그레이드 방식을 사용하시기 바랍니다.

판올림

  • 플러그인 비활성화(Deactivate) > 기존의 플러그인을 삭제 > 새로운 플러그인을 업로드 > 플러그인 활성화(Activate)
  • 관리자화면에 표시되는 업그레이드 링크를 통해 업그레이드를 진행합니다.
  • 외부프로그램 추적을 사용중이었다면, 기존의 external.php 파일을 지우고, 새로운 파일을 생성해야만 합니다.

GeoIP 데이터베이스

  • 사용중인 HDD에 여유가 있다면, 바이너리 포멧(binary format)의 MaxMind의 GeoIP 데이터베이스를 사용할 수 있습니다.
  • 특히 GeoSlimStat을 사용중이라면, GeoLiteCity 데이터베이스를 사용한다면 100배가까이 빠른 속도를 맛볼 수 있습니다.
  • MaxMind에서 다운받은 GeoLiteCity.dat.gz 또는 GeoIP.dat.gz의 압축을 풀어(윈도우사용자는 WinRAR를 사용하세요) 생성되는 .dat 확장자를 가진 파일(GeoIP.dat 또는 GeoLiteCity.dat)을 wp-slimstat-ex/lib/geoip 폴더에 업로드하세요
  • MaxMind에서는 매월 1일에 새로운 데이터베이스를 제공하므로, 그에 맞춰 파일을 업데이트할 수 있습니다.

외부프로그램 추적

  • SlimStat-Ex v2부터 자바스크립트 코드를 삽입하는 방법을 사용할 수 있게되었습니다.
  • 자바스크립트 코드는 관리자화면(Admin) > 설정(Options) > SlimStat > SlimStat 관리도구(SlimStat-Admin) 패널의 하단에서 확인 할 수 있습니다.
  • 자바스크립트 코드 예 :
    <script type='text/javascript' src='http://yourdomain.com/wpinstall/wp-content/plugins/wp-slimstat-ex/lib/external.js.php'></script> 
    <script type='text/javascript'> 
    var _SlimStatExTrack = SlimStatExTrack(); 
    </script>

처음 설치

  • 처음 설치하시는 분께서는 이 페이지를 참고하세요.
  • 플러그인 설정에 대한 내용은 이 페이지를 참고하세요.

 

It's been a long time since last release. After all, here is a new version.

Notice

  • Since v2.0, SlimStat-Ex requires WP 2.5 or greater.
  • Users who are using lesser than WP 2.5 can use SlimStat-Ex v1.6 which does not supported anymore.

Change

  • Supports more web browsers and bots
  • If you are on PHP 5.0 or greater with curl supported server, curl multi connection will speed up Geo-IP remote query on GeoSlimStat Pin.
  • Added option for selecting whois database (dnsstuff or ip-lookup)
  • Supports local GeoIP databse by MaxMind
  • Supports permission settings for view stats, ignore track and manage options by roles.
  • Updated SlimStat resource table for fix errors.
  • Removed support for upgrading from wp-shortstat and wp-slimstat.

Upgrade

  • Deactivate plugin > Delete old plugin > Upload new plugin > Activate plugin
  • Follow the upgrade link on wordpress admin page.
  • If you are using external tracking, delete old external.php and create new one.

GeoIP database

  • If you have sufficient space on HDD, you can use MaxMind's GeoIP database(binary format).
  • Especially for GeoSlimStat, using GeoLiteCity database can speed up(about 100 times) loading time.
  • Download GeoLiteCity.dat.gz or GeoIP.dat.gz and upload extracted file(GeoIP.dat or GeoLiteCity.dat) to wp-slimstat-ex/lib/geoip folder, that's all. If you are using Windows, WinRAR is the one for extracting.
  • You can update your database file every start of month from MaxMind's free GeoIP Source page.

External Tracking

  • SlimStat v2 supports external tracking with javascript code.
  • You can see your javascript code on Admin > Options > SlimStat > SlimStat-Admin panel
  • Javascript code example :
    <script type='text/javascript' src='http://yourdomain.com/wpinstall/wp-content/plugins/wp-slimstat-ex/lib/external.js.php'></script> 
    <script type='text/javascript'> 
    var _SlimStatExTrack = SlimStatExTrack(); 
    </script>

First install