Category Archives: Wordpress

Polyglot WordPress Plugin 과 Suffusion Theme

현재 제 WordPress Blog의 Theme는 Suffusion Theme 입니다. 이 Theme와 제가 따로 쓰는 다중언어 지원 Plugin인 Polyglot WordPress Plugin을 같이 쓸 경우에 Page Title과 Post Title에 Polyglot tag를 잘 Handle하지 못합니다. 이때 다음과 같이 Suffusion Theme에서 쓰는 함수에 Filter를 polyglot.php에 추가해 줍니다.

add_filter('suffusion_get_post_title_and_link', 'polyglot_filter',1);
add_filter('suffusion_set_title', 'polyglot_filter',1);

물론 polyglot plugin이 update되면, 이것도 추후에 수정해 주어야 합니다.

WordPress Plugin 인 YW-LATEX 업그레이드 했습니다.

워드 프레스 (WordPress) LaTex 플러그인인 YW-LATEX를 업그레이드 했습니다. 다음은 그 Upgrade 된 항목입니다.

  1. LaTex Image의 위치를 조절할 수 있도록 했습니다. “top”, “bottom”, “middle”, “left”, “right” 입니다. 예를 들어, 와 같이 Option을 추가하게 했습니다.
  2. Comment에서도 LaTex를 쓸 수 있도록 했습니다.

WordPress Flickr Tag Plugin V1.1 으로 업그레이드

WordPress Plugin인 Flickr Tag에 Lightbox Plugin 이용시 원본 파일 사이즈를 정할 수 있게 하는 방법에서 수정한 Flickr Tag에서 최근 Flickr가 Medium Size로 기존의 500과 새로 추가된 640 Medium에 대해서 추가된 수정본입니다.

1. 수정된 전체 Flickr Tag Plugin V1.1은 이것은 제가 수정한 Flickr Tag에 있습니다.

2. 다음은 V1.0과 V1.1의 diff 된 파일입니다.

  • FlickrTagAdmin.php

    --- flickr-tag-youngwhan/FlickrTagAdmin.php 2009-09-27 17:39:50.000000000 -0600
    +++ flickr-tag-v1.1/FlickrTagAdmin.php  2010-11-20 18:16:30.000000000 -0700
    @@ -72,11 +72,12 @@
     >
     
     <select size=1 name="flickr_tag_<?php echo $entity; ?>_size">
    -    <option value="square" <?php if($this->request[$entity . '_size'] == "square") echo "selected"; ?>>Square (75 x 75 pixels)</option>
    -    <option value="thumbnail" <?php if($this->request[$entity . '_size'] == "thumbnail") echo "selected"; ?>>Thumbnail (100 x 75 pixels)</option>
    -    <option value="small" <?php if($this->request[$entity . '_size'] == "small") echo "selected"; ?>>Small (240 x 180 pixels)</option>
    -    <option value="medium" <?php if($this->request[$entity . '_size'] == "medium") echo "selected"; ?>>Medium (500 x 375 pixels)</option>
    -    <option value="large" <?php if($this->request[$entity . '_size'] == "large") echo "selected"; ?>>Large (1024 x 768 pixels)</option>
    +    <option value="square" <?php if($this->request[$entity . '_size'] == "square") echo "selected"; ?>>Square (75 x height pixels)</option>
    +    <option value="thumbnail" <?php if($this->request[$entity . '_size'] == "thumbnail") echo "selected"; ?>>Thumbnail (100 x height pixels)</option>
    +    <option value="small" <?php if($this->request[$entity . '_size'] == "small") echo "selected"; ?>>Small (240 x height pixels)</option>
    +    <option value="medium" <?php if($this->request[$entity . '_size'] == "medium") echo "selected"; ?>>Medium (500 x height pixels)</option>
    +    <option value="medium 640" <?php if($this->request[$entity . '_size'] == "medium640") echo "selected"; ?>>Medium (640 x height pixels)</option>
    +    <option value="large" <?php if($this->request[$entity . '_size'] == "large") echo "selected"; ?>>Large (1024 x height pixels)</option>
         <option value="original" <?php if($this->request[$entity . '_size'] == "original") echo "selected"; ?>>Original (varies in size)</option>
     </select>
     
    @@ -92,11 +93,12 @@
     >
     
     <select size=1 name="flickr_tag_<?php echo $entity; ?>_actualsize">
    -    <option value="square" <?php if($this->request[$entity . '_actualsize'] == "square") echo "selected"; ?>>Square (75 x 75 pixels)</option>
    -    <option value="thumbnail" <?php if($this->request[$entity . '_actualsize'] == "thumbnail") echo "selected"; ?>>Thumbnail (100 x 75 pixels)</option>
    -    <option value="small" <?php if($this->request[$entity . '_actualsize'] == "small") echo "selected"; ?>>Small (240 x 180 pixels)</option>
    -    <option value="medium" <?php if($this->request[$entity . '_actualsize'] == "medium") echo "selected"; ?>>Medium (500 x 375 pixels)</option>
    -    <option value="large" <?php if($this->request[$entity . '_actualsize'] == "large") echo "selected"; ?>>Large (1024 x 768 pixels)</option>
    +    <option value="square" <?php if($this->request[$entity . '_actualsize'] == "square") echo "selected"; ?>>Square (75 x height pixels)</option>
    +    <option value="thumbnail" <?php if($this->request[$entity . '_actualsize'] == "thumbnail") echo "selected"; ?>>Thumbnail (100 x height pixels)</option>
    +    <option value="small" <?php if($this->request[$entity . '_actualsize'] == "small") echo "selected"; ?>>Small (240 x height pixels)</option>
    +    <option value="medium" <?php if($this->request[$entity . '_actualsize'] == "medium") echo "selected"; ?>>Medium (500 x height pixels)</option>
    +    <option value="medium640" <?php if($this->request[$entity . '_actualsize'] == "medium640") echo "selected"; ?>>Medium (640 x height pixels)</option>
    +    <option value="large" <?php if($this->request[$entity . '_actualsize'] == "large") echo "selected"; ?>>Large (1024 x height pixels)</option>
         <option value="original" <?php if($this->request[$entity . '_actualsize'] == "original") echo "selected"; ?>>Original (varies in size)</option>
     </select>
     
  • FlickrTagCommon.php

    --- flickr-tag-youngwhan/FlickrTagCommon.php    2009-09-27 17:40:12.000000000 -0600
    +++ flickr-tag-v1.1/FlickrTagCommon.php 2010-11-20 18:12:01.000000000 -0700
    @@ -63,6 +63,7 @@
        "thumbnail" => "_t",
        "small" => "_m",
        "medium" => "",
    +   "medium640" => "_z",
        "large" => "_b",
        "original" => "_o"
     );
    @@ -72,6 +73,7 @@
          "thumbnail" => "_t",
          "small" => "_m",
          "medium" => "",
    +     "medium640" => "_z",
          "large" => "_b",
          "original" => "_o"
      );
    
  • FlickrTagEngine.php

    --- flickr-tag-youngwhan/FlickrTagEngine.php    2009-09-27 17:39:40.000000000 -0600
    +++ flickr-tag-v1.1/FlickrTagEngine.php 2010-11-20 18:18:54.000000000 -0700
    @@ -116,7 +116,7 @@
          'photoset_id'       => $param,
          'privacy_filter'    => 1, // public
          'method'        => 'flickr.photosets.getPhotos',
    -     'extras'        => 'original_format',
    +     'Extras'        => 'original_format',
          'format'        => 'php_serial'
      );
    

3. 다음은 Screenshot 입니다.
Screen shot 2010-11-20 at 6.10.15 PM

WordPress Flickr Tag Plugin에서 Privacy 옵션을 바꾸자

WordPress Plugin인 Flickr Tag에 Lightbox Plugin 이용시 원본 파일 사이즈를 정할 수 있게 하는 방법에서 소개한 Flickr Tag을 쓰다가 가족 블로그를 쓸 때 Privacy Option을 둘 수 없어서 불편한 점이 있었습니다. 그래서 항상 Flickr에 Public으로 했었는데, 사실 조금 공부해 보면, 이 문제를 해결 할 수 있게 되네요.

Plugin Source에서 FlickrTagEngine.php 파일을 열고 renderTag() 함수를 찾습니다. 이때 다음과 같이 Flickr의 Set을 불러올때 다음과 같은 Parameter를 조절할 수 있습니다. 이 옵션은 Flickr API인 flickr.photosets.getPhotos를 이용하고 있는데, 이때 Privacy 옵션을 줄 수 있습니다.

switch($mode) {
case "set":
	if(! $param)
		return $this->error("No set ID was provided.");

	$params = array(
		'photoset_id'		=> $param,
		'privacy_filter' 	=> 1, // public
		'method'		=> 'flickr.photosets.getPhotos',
		'Extras'		=> 'original_format',
		'format'		=> 'php_serial'
		);

	$r = $this->apiCall($params);

위에서 privacy_fliter 값을 3을 주면, Private 중에서 Family로 된 것만 추출하여 보여 줄 수 있습니다. privacy_filter를 아예 지워버리면, privacy에 상관없이 모든 사진을 불러 오게 되네요. 참고하시기 바랍니다.

WordPress Plugin중에 Link to Post 소개

예전에 WordPress Plugin 중에서 Posting 할때, 예전 Posting을 참고하여 Link를 만들어 주는 Plugin으로 Simple Link를 이용하였었습니다. 간단하게 Searching도 되고, 본문중에 Link를 바로 삽입하게 해주니 글을 쓸때, 무척 편리한 Plugin 이었습니다.

그런데, 최근 WordPress를 이용 도중에 AJAX가 동작하지 않는 등의 문제가 있어 살펴 본 결과 Simple Link Plugin 이 일으키는 문제였음을 알게 되었습니다. 현재 Simple Link는 Maintenance가 되고 있지 않습니다.

다시 googling과 searching을 하여 찾아 낸 것이 Link to Post 라는 Plugin 입니다. 위의 Simple Link와 비슷한 역할을 하면서도, 특별하게 아직까지 WordPress Admin Page들에 대한 Side Effect등의 Bug는 없는 듯 싶습니다.

사용하는 방법도 간단하게도 TinyMCE와 HTML에 버튼이 삽입이 되어 링크로 만들 부분을 Block으로 잡고, 버튼을 누르면 지난 페이지들을 Search도 할 수 있고, 최근 Post 된 목록도 보여주면서 쉽게 Link를 만들 수 있게 해 줍니다. Post 된 것만 Link로 잡는 것이 아니라, Page도 Link로 잡아주는 버튼도 있습니다.

WordPress Plugin인 Flickr Tag에 Lightbox Plugin 이용시 원본 파일 사이즈를 정할 수 있게 하는 방법

WordPress에서 Flickr에 있는 사진등을 Share 할 수 있게 하는 Plugin인 Flickr Tag가 있습니다. 이 Flickr TagLightbox Plugin을 사용할 수 있도록 자동으로 링크를 만들어 주는 편리한 기능까지 가지고 있습니다.

안타깝게도 이 Plugin에서 아쉬운 것은 2.4.6 버전이후로 저작자인 Jeff Maki가 더이상 Maintenance를 하지 않는다는 데 있습니다. 제가 필요한 기능은 사진을 클릭했을때, 다시 사진을 크게 보여주는 Lightbox Plugin을 사용하할때, 원본크기를 제 마음데로 정할 수 없다는데 있습니다.

제가 그렇게 잘 아끼고 잘 쓰고 있는 Flickr TagLightbox Plugin을 이용할때 원본크기를 정할 수 있도록 수정했습니다.

1. 우선 Flickr Tag의 원본은 이곳에서 받았습니다.

2. 그리고 이것은 제가 수정한 Flickr Tag 입니다.

3. 다음 파일을 클릭하면 Diff 된 모습을 볼 수 있습니다.

WordPress용 다음 뉴스 블로거 송고 자동 위젯 삽입

그동안 다음 뉴스 송고를 중단했었던 이유가 위젯삽입이 너무 불편했기 때문이었습니다. 다음에 들어가서 아이디와 패스워드를 입력한후에 다음뉴스송고 메뉴를 찾아 들어가서, 다음에서 내 블로거의 리스트를 읽은 후에 선택을 하고, 다시 category를 분류해서 선택한후에 송고를 할 수 있습니다. 이 송고후에 나타나는 메뉴를 찾아 들어가서 다시 자바스크립트를 카피하여 본문에 수동으로 삽입을 했었던 것이 기존의 방법이었습니다.

여전히 불편은 하지만 (믹시는 그런면에서 한번 세팅하면 자동으로 모든 블로깅내용이 송고가 되는 편리함과 영문윈도우즈에서도 한글이 깨지지 않는 두가지 장점이 있습니다.) 그 불편함중에 자바스크립트를 카피해서 본문에 수동으로 삽입하는 과정을 자동화 할 수 있는 플러그인이 생겼습니다. 아직 wordpress plugin depository에 있지 않아서 플러그인의 자동 업데이트라던가 하는 것은 기대할 수 없지만, 수동으로 그나마 이 플러그인을 설치해 두면, 다음에 들어가서 송고만 했다면, 자동으로 위젯이 설치 되는 플러그인입니다.

다운로드: http://code.google.com/p/wp-daum-bloggernews/downloads/list

원문: 워드프레스 플러그인 다음뷰 추천 위젯

WP plugin: light box 2 소개

lightbox는 Lockesh Dhakar가 Javascript를 이용하여 그림이 삽입될때, 크기가 큰 사진의 경우 작은 thumbnail로 만들어서 클릭했을때, 본 크기로 보여지게 하는데 도움을 주는 툴입니다. 이것을 wordpress plugin으로 적용한 것이 Lightbox plugin for WordPress 입니다.

이 plugin이 할 수 있는 feature의 하나는 lightbox에서 한가지 실험해 볼 수 있습니다. 이 글에서도 예제를 하나 보여드리면,

ain't no sunshine...

위를 클릭해 보면, 현재 제가 쓰고 있는 lightbox plugin이 어떻게 동작하는가를 보여 줍니다. (예제는 flickr에서 linoush2000님이 올린 photo중에서 “ain’t no sunshine…” 이라는 제목의 사진을 가져왔습니다.)

Install

Plugin의 install은 무척 쉽습니다. admin 페이지에서 add new를 클릭하여 lightbox를 검색해서 찾아서 바로 인스톨하거나 lightbox에 들어가서 zip파일을 받은 후에 역시 admin 페이지에서 add new로 업로드 하시면 됩니다. (자세한 것은 WP 홈페이지 를 참조하시기 바랍니다.)

Usage

아주 간단합니다. 다음과 같은 tag를 써주면 됩니다. 위의 예제를 보면,

<a title="ain't no sunshine..." href="http://farm2.static.flickr.com/1320/3352689777_c561568b36_b.jpg" target="_blank"><img title="ain't no sunshine..." src="http://farm2.static.flickr.com/1320/3352689777_c561568b36_m.jpg" alt="ain't no sunshine..." width="240" height="180" /></a>

와 같이 하면 됩니다.

EUC-KR 트랙백 Plugin

아직도 네이버 같은 블로그는 트랙백 encoding으로 euc-kr을 쓰고 있습니다. 몇번을 건의했었지만, 네이버측에서는 아직까지 고쳐지지 않고 있네요. encoding이 어려운 일인지는 모르겠지만, 최근 대문을 바꾼 네이버를 보면서, 그러한 세부기술에서의 발전은 없고, 그냥 대문디자인에서만 css를 좀 더 잘 이용한 수준밖에는 안보이는군요. 그래서 조금 실망스럽습니다.

아무튼 그래도 몇몇분의 좋은 블로거중에 네이버 블로그를 쓰시는 분들이 있습니다. 이런 분들과 트랙백 통신을 하려면, 네이버의 수정이 절대적으로 필요했었지만, 우연히도 오늘 euc-kr로 트랙백을 보낼 수 있는 plugin을 발견했습니다.

082NET님의 EUC-KR 트랙백 Plugin인데요, 참 반가운 Plugin이네요. 사실 이런 플러그인이 필요가 없음에도 불구하고, 네이버의 게으름인지 기술부족인지를 오히려 WordPress가 극복하게 하는군요. 참 아이러니하지 않을 수 없습니다.

자세한 것은 위의 링크를 통해 보시면 되구요, 설명에 의하면, euc-kr로 통신하는 블로그는 euc-kr로 하고, utf-8으로 통신하는 블로그는 utf-8으로 통신하는 것 같습니다. 만일 문제가 발생되는 블로그는 트랙백 주소 앞에 !를 붙여주면 된다고 하네요. 참 편리한 플러그인듯 싶습니다. 082NET님께 감사합니다. :)

워드프레스 플러그인: Keyword Link Plugin (V0.6) 수정

키워드에 따라 자동으로 하이퍼링크를 만들어 주는 플러그인을 찾다가 마침내, Keyword Link Plugin 1 2 를 발견했습니다.

이것은 제가 그동안 찾고 싶었던 플러그인인데요, 제가 촛점으로 맞춘 기능은 다음과 같습니다.

  • 키워드를 넣고 거기에 따른 하이퍼링크를 자동으로 추가할 것
  • UTF-8을 지원할 것
  • 새창으로 열기 옵션이 있을 것

다 좋았는데, utf-8을 완벽하게 지원하지 안는 것 같았습니다. 그래서 몇가지 수정을 했구요, 또 “EDIT” 버튼을 눌렀을 때, 제대로 옵션을 표현하지 못하는 버그도 있고 해서 수정했습니다. 이 글은 제가 수정한 것을, 첫째는 저를 위한 노트가 될 듯 싶구요, 둘째는 이 수정을 다른 분들과 공유하고자 하여 글을 올립니다.

1. 버그: 옵션을 저장할때 제대로 기록하지 않는다.

Export/Import CSV를 이용하면, 이 문제가 사라지지만, 폼을 이용하여 수정하고 추가할때는 발생하는 문제입니다. 옵션을 선택하고 이것을 저장할때, 워드프레스의 option 테이블에 잘못된 정보를 기록하는 것이 문제였습니다. 문제를 보면, 예를 들어 플러그인 세팅 페이지에서 다음과 같이 입력하면,

Wordpress keyword link plugin option selection

정보가 사실은 “0|0|1|1|0” 와 같이 되어야 하지만, 실제 저장이 “||new window|ignore case|” 이와 같이 됩니다. 그래서 다시 EDIT 버튼을 누르면, 다음과 같이 나옵니다.

bug picture when edit button is clicked.

이 문제를 해결하기 위해 bm_getvalue() 함수를 추가했구요, bm_keywordlink_savenew() 함수를 다음과 같이 수정했습니다.

function bm_getvalue($var) {
     if ($var) {
	  return "1";
     } else {
	  return "0";
     }
}

function bm_keywordlink_savenew()
{
      $links = get_option(BM_KEYWORDLINK_OPTION);

		$keyword = $_POST['keyword'];
		$link = $_POST['link'];
		$nofollow = bm_getvalue($_POST['nofollow']);
 		$firstonly = bm_getvalue($_POST['firstonly']);
 		$newwindow = bm_getvalue($_POST['newwindow']);
 		$ignorecase = bm_getvalue($_POST['ignorecase']);
 		$isaffiliate = bm_getvalue($_POST['isaffiliate']); 

		if ($keyword == '' || $link == '')
		{
		  bm_keywordlink_topbarmessage(__('Please enter both a keyword and URL'));
		  return;
		}

		if (isset($links[$keyword]))
		{
		  bm_keywordlink_topbarmessage(__('Existing keyword has been updated'));
		}

 		/* Store the link */
	  $links[$keyword] = implode('|',array($link,$nofollow,$firstonly,$newwindow,$ignorecase,$isaffiliate));
	  update_option(BM_KEYWORDLINK_OPTION,$links);
}

이 이후에는 동작을 잘 했습니다.

2. UTF-8 지원문제

2-1. readme.txt에 있는 가이드라인을 따라하기

readme.txt에 보면, 아시아 언어를 쓰기 원한다면, bm_keywordlink.php에 있는 $regEx 변수값을 수정해야 한다고 되어 있습니다. 관련된 함수는 bm_keywordlink_replace() 인데요, 거의 마지막 부분에 다음을

$regEx = '\'(?!((<.*?)|(<>]*?)>)|([^>]*?))\'s' . $case;

다음으로 수정해 줍니다.

$regEx = '\'(?!((<.*?)|(<>]*?)>)|([^>]*?))\'s' . $case;

2-2. UTF-8을 지원하기 위한 decode64 추가

이미 javascript로 decode64() 함수가 이 플러그인에 있지만, 아시아 언어와는 동작을 제대로 하지 않는 것 같습니다. 그래서, 아시아언어를 같이 지원하기 위해 다른 javascript code를 WebToolKit site에서 가져왔습니다. 다음은 그 부분입니다.

/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {

    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = Base64._utf8_encode(input);

        while (i < input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },

    // public method for decoding
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        while (i < input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = Base64._utf8_decode(output);

        return output;

    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}
&#91;/sourcecode&#93;</pre>
또한, BMEditKeyword() 함수를 다음과 같이 수정합니다.
<pre>
function BMEditKeyword(keyword,url,nofollow,firstonly,newwindow,ignorecase,isaffiliate)
		{
 			 document.bm_keywordadd.keyword.value      = Base64.decode(keyword);
			 document.bm_keywordadd.link.value         = Base64.decode(url);
			 document.bm_keywordadd.nofollow.checked   = (nofollow==1);
			 document.bm_keywordadd.firstonly.checked  = (firstonly==1);
			 document.bm_keywordadd.newwindow.checked  = (newwindow==1);
			 document.bm_keywordadd.ignorecase.checked = (ignorecase==1);
			 document.bm_keywordadd.isaffiliate.checked= (isaffiliate==1);
			 window.location.hash = "keywordeditor";
		}

2.1 와 2.2 는 utf-8을 지원하기 위해 반드시 필요한 작업이었습니다. 이 이후에 “EDIT” 버튼을 누르면, 기존에는 아시아문자 (예:한국어)를 가져오지 못했지만, 이제는 폼으로 잘 가져오게 되네요.

이제 키워드를 등록하고 자동으로 하이퍼링크를 만들어주는 플러그인을 즐기시면 됩니다. :)

  1. Plugin Homepage: WordPress Keyword Link Plugin
  2. WordPress Plugin Page: BlogMechanics KeywordLink

WordPress Plugin: Custom Field Template

Custom Field Template: http://wordpress.org/extend/plugins/custom-field-template/

WordPress 의 Custom Field Template을 소개합니다.

WordPress에서 Posting을 할때 Custom Field라는 것이 있습니다. 이 Custom Field를 잘 활용하면, theme에서 이 Post에 해당하는 특별한 기능을 수행 할 수 있습니다.

Worpress의 Custom Field에 대해서 알아 보시려면, Using Custom Fields 혹은 Working with Multiple Themes Outside of the WordPress Installation Directory 에서 잘 표현되어 있으니 참고하시기 바랍ㄴ다.

이 Custom Field에는 항상 key값과 value를 넣어주게 되어 있는데, 늘 기억하기도 그렇고, 혹은 실수로 잘못 입력할 수도 있습니다. 이 plugin은 이런 것을 미연에 방지하고자 custom field 의 template을 만들어 두고 편리하게 쓸 수 있게 합니다. 원래는 Custom Field GUI 에서 온 것인데, 이 기능을 저자인 Hiroaki가 확장하여 만들었습니다.

실제 써 보니, 무척 편리하네요. :)

TinyMCE Advanced: WordPress Plugin

WordPress의 Plugin중의 하나인 TinyMCE Advanced를 소개합니다. 원래 WordPress는 WYSIWYG Tool을 쓰고 있는데, 이것은 그것을 더 확장하여 Horizontal Line, Anchor, Font Size, Font Style등에 대한 기능을 더 추가할 수 있도록 하는 기능을 가지고 있습니다. 기존의 WordPress TinyMCE의 Tool에서도 더 많은 Option을 제공하여 더 많은 일을 수행할 수 있네요.

Plugin Website는 WordPress Plugin의 Web Site에 있습니다.

다음은 Plugin Web Site에서 가져온 Screenshot 입니다.

TinyMCE Screenshot