[태그:] 플러그인

  • 엘리멘터 프로 라이센스 불일치 알림 없애기

    엘리멘터 프로 라이센스 불일치 알림 없애기

    개발 사이트에서 원래 사이트를 복제하면, 도메인이 당연히 달라지게 된다. 그러면서 상용 라이센스 플러그인인 엘리멘터 프로 같은 플러그인은 라이센스 불일치 알림을 띄운다. 크게 사용상에 불편은 없지만 이 불일치 알림을 계속 보는 것은 성가시다.

    엘리멘터 프로의 라이센스 불일치 알림. 관리자 페이지에서 볼 수 있다.

    위에 보이는 이 그림 말이다. 이걸 안 보이게 만드는 플러그인을 따로 만들어 GIST에 올려둔다.

    https://gist.github.com/chwnam/0d43b8e919fad972a679d0537117f566

    강조한다. 이 플러그인을 결코 엘리멘터 프로의 불법복제를 장려하려고 만든 것이 아니다. 단지 개발 사이트에서 개발을 할 때 불편을 덜기 위한 임시 용도임을 명확히 한다. 단지 눈에 보이는 알림만을 보이지 않게 하는 것일 뿐이다. 만일 엘리멘터 프로가 라이센스 불일치를 감지해 기능에 제약을 걸 경우, 이 플러그인은 그런 제한을 푸는 – 소위 크랙(crack) 과 같은 행위는 절대 하지 않는다. 그러니 그냥 개발 용도라만 사용하시라. 라이센스는 별도로 걸지 않는다. 자유롭게 받아 사용하시라.

  • Naran Terms Merger v1.0.0

    Naran Terms Merger v1.0.0

    워드프레스 사이트 내에 정의된 택소노미 텀들을 정리하는 두구입니다. 블로그를 오래 운영하면서 그래도 자잘한 글들을 쓰다 보니 태그가 많이 쌓입니다.

    그런데 태그를 기분대로 만들다 보니, 태그 분류의 응집력이 너무 떨어집니다. 태그가 글들을 상세하게 분류하는 것도 나름 중요하지만, 불필요하게 태그가 중복되기도 하고, 태그 하나에 포스트가 겨우 하나씩만 대응되기도 합니다. 그런 것들은 재고의 여지가 있습니다.

    파편화된 태그를 모아 좀 더 응집력 있는 태그로 만든다… 컨셉은 좋습니다. 의외로 WordPress.org 에 올라온 플러그인도 많지 않습니다. 이게 해 보면 단순한 작업일 것 같지만 파편화된 텀을 일관성있게 묶게 시각화하는 UI 작업이 간단하지가 않은 것 같습니다.

    그래도 일단 초기의 컨셉을 다듬고 수정한 1.0.0 버전을 만들었습니다. 실제 텀들을 삭제하는 작업을 포함하므로 아직은 좀 더 테스트가 필요하겠습니다. 실제로 운영된 블로그에 설치해서 내부 테스트를 하니, 아직은 좀 더 필요한 부분들이 많은 것 같습니다.

    병합 방법

    관리자 > 도구 > Terms Merger 에서 찾을 수 있습니다. 텀을 헤집는 녀석이라 관리자 권한이어야만 접근이 가능하도록 설정햇습니다.

    화면에 두 개의 탭이 나옵니다. 하나는 Terms, 하나는 Slots 입니다.

    Terms 에서는 택소노미별 텀을 늘어놓습니다. Slots 에서는 병합할 텀들을 모으고 점검합니다.

    Terms 에서 아래 그림처럼 텀을 선택하고 슬롯을 지정합니다. 그러면 해당 텀은 그 슬롯에 배당됩니다.

    텀들을 슬롯에 모으면, Slots 탭으로 이동하여 슬롯에 담긴 텀을 확인해 볼 수 있습니다.

    1 Add new slot 버튼을 누르면 슬롯을 더 만들 수 있습니다. 최대 10개까지 생성이 가능합니다. 즉, 텀을 1번부터 10번 슬롯 중 하나에 담아서 분류를 할 수 있게 되는 것입니다.

    이 때 Assigned term(s) 에 내가 쌓아둔 텀들의 목록이 나타납니다. x를 누르면 슬롯에서 삭제할 수 있습니다.

    2 Header term 은 실제 병합을 할 때 어떤 텀을 대상으로 병합할지 기준을 정하는 것입니다. 파란색으로 하이라이트된 텀이 헤더 텀입니다. 위 그림에서는 ‘admin-ajax.php’라는 텀을 기준으로 나머지 텀들이 병합됩니다.

    3 Merge Terms 를 누르면 병합이 진행됩니다. 진행하기 전 경고창이 떠서 재차 확인을 요구합니다.

    4 Remove this slot 은 슬롯을 지우는 명령입니다. 슬롯만 삭제되고 텀에는 아무런 영향이 없습니다.

    많은 개선점이 …

    UI가 그다지 간단하지는 않았습니다. 많은 디테일한 점이 필요한 것으로 보입니다. 개발된 플러그인을 제 블로그에 설치하여, 나름 실사 블로그 사이트에 쌓인 태그 데이터를 대상으로 테스트해 보았습니다. 그래 보니 실제 사용에 있어 사용자가 정말 편리하게 텀을 분석하고 관리하려면 아직 부족한 점이 많다는 것을 느낍니다. 그래도 이 정도 개발을 진행한 것에 보람을 느끼며 포스팅을 올립니다.

    좀 더 완성도를 올리면 wordpress.org 에 올려 볼까 고민하고 있습니다. 혹시 원하는 분이 계시다면 github repository에서 다운로드 받아 테스트해 보세요.

  • 트러블슈팅을 편하게! Health Check & Troubleshooting

    워드프레스 사이트 이용을 하다 보면 별 희한한 버그를 만날 때가 가끔씩 있다. 뭐, 사실 대부분은 내가 짠 프로그램에서 나는 버그지만, 가끔은 진짜 서드파티 플러그인의 버그일 때도 있고 아니면 내가 만든 플러그인이 아닌 레거시에서 의도치 않은 버그가 나올 때가 있다.

    이럴 때는 모든 테마와 플러그인을 완전히 끄고 하나하나 켜 가면서 범인을 색출하는 방법이 있다. 워드프레스에는 수많은 필터와 액션이 뒤엉켜 돌아가기 때문에 문제 파악이 매우 어려울 수도 있다. 그러므로 이럴 땐 기능을 꺼보면서 시작점을 찾아 보는 것이 가장 단순명료하다.

    그런데 문제가 있다. 운영 중인 사이트에 함부로 플러그인과 테마를 껐다 켤 수는 없다. 사이트의 기능이 멈출 수도 있기 때문이다. 과연 이럴 때는 어떻게 해야 할까?

    (더 보기…)
  • 미립자팁: 플러그인 설문 폼 안 보고 비활성화하기

    가끔 보면 플러그인 비활성화 할 때 순순히 비활성화가 되지 않고 어떤 설문 폼을 띄우는 녀석들이 있다. 이런 녀석들의 귀찮은 설문 폼을 안 보고 비활성화하는 방법이 하나 있긴 하다.

    (더 보기…)
  • 새 워드프레스 운영자에게 보내는 잔소리

    클라이언트에게 답신 메일을 보내다, 장문이 되어버렸다. 그런데 나중에 발췌해서 공유하고자 함이니 고객에 대한 것은 편집해서 공유해 본다. 잘 쓴 글은 아니지만 그래도 나누고 싶다.

    워드프레스를 사용하여 운영을 시작하시는 분들께는 다음과 같은 조언을 드리고 싶습니다.

    (더 보기…)
  • 워드프레스에서 PHP 세션은 독이 될 수 있습니다.

    이전에 잠시 쓴 포스트의 검증을 위한 작업을 했습니다. 두 포스트를 통해 저는 PHP 세션(session)은 어지간하면 사용하지 말기를 권고드리며, 다른 방법을 사용하시기를 조언드립니다. 세션 사용시 사이트의 성능 저하가 발생할 수 있기 때문입니다.

    (더 보기…)

  • Uncode 테마 + KBoard 게시판은 성능 저하를 일으킬 수 있습니다.

    불타는 금요일을 보내고 토요일 새벽까지 디버깅을 한 결과입니다.
     Uncode 테마와 KBoard 게시판을 사용할 경우 워드프레스의 성능 저하를 유발시킬 수 있습니다. 둘을 따로따로 쓰면 문제가 없지만 같이 사용하는 경우 사이트에 로딩이 생기며, 특히 비주얼 컴포저 사용시 심각한 로딩 시간이 생기게 됩니다.

    원인은 KBoard의 세션과 Uncode 테마의 ‘list_images‘ AJAX 동작 때문에 발생합니다. KBoard의 메인 파일인 kboard/index.php 파일의 초반에는 session_start()로 세션을 시작하는 구문이 있습니다. 그리고 이 세션은 KBoard 곳곳에서 활용됩니다.

    한편 Uncode는 list_images라는 ajax 액션을 통해 uncode_list_images()라는 함수를 동작시킵니다(uncode/core/inc/admin.php: 1086). 이 함수는 무려 모든 이미지 파일을 불러와 그 이미지 파일의 용량을 계산합니다. 그리고 아래와 같은 메시지를 응답으로 넘깁니다.

    The Adaptive Images system is using 87.6M of the 6.29G space left.

    JSON 포맷이 아닌, 그냥 단순 텍스트 응답으로 날아옵니다. 이 응답이 자바스크립트 같은 곳에서 프로그래밍적으로 유의미한지는 확인하지 않았으나, 그렇게 보이지는 않습니다.

    문제는 이미지의 양이 많아질 때 터집니다. 제가 작업 중인 사이트는 이미지 파일만 1만개에 가깝게 유지하고 있습니다. 사이트의 용량만도 기가바이트급입니다. 언코드는 무식하게도 이 1만개에 육박하는 이미지를 매번 관리자 화면 로딩시 별도의 AJAX 요청을 통해 모두 쿼리로 불러와, 용량을 계산하고, 위 메시지를 출력하고 있던 것입니다.  이 계산을 위해 대략 수 초, 심하면 저의 경우처럼 30~40초까지 걸리기도 합니다.

    이제 이 상태에 KBoard가 끼어들면 문제가 정말 심각해집니다.  KBoard는 로딩될 때마다 세션을 실행합니다. 세션에는 한 번에 하나의 연결만 접근할 수 있으므로 둘 이상의 연결을 동시 처리할 수 없습니다. 그런데 언코드는 파일 용량을 계산하는 AJAX를 페이지를 부를 때마다 자동으로 실행합니다. 병목구간이 발생하는 것입니다.

    비주얼 컴포저로 각 위젯을 편집 버튼을 누르면 각 UI 정보는 AJAX를 통해 얻어 옵니다. 그러나 이미 이미지 용량 계산 때문에 다른 AJAX 요청에는 응답할 수 없는 상태입니다. 그래서 꽤 오랫동안 로딩이 걸리게 되는 것입니다. 아마 다른 페이지에 접근할 때도 마찬가지로 로딩이 심하게 발생할 수 있을 것입니다.

    문제를 해결하려면

    1. Uncode와 KBoard를 같이 쓰지 않는다.
    2. 같이 써야 한다면 Uncode의 이미지 계산하는 부분, uncode/core/inc/admin.php 파일의 1086번째 줄 부근의
      /* AJAX call to load all images */
      add_action( 'wp_ajax_list_images', 'uncode_list_images' );

       부분을 주석 처리.

    3. 코어를 건드리는 것은 부담스러우므로 차일드 테마나, 별도의 플러그인을 생성.
      add_action( 'plugins_loaded', 'my_uncode_kboard_fix' );
      
      function my_uncode_kboard_fix() {
        if( has_action( 'wp_ajax_list_images', 'uncode_list_images' ) {
          remove_action( 'wp_ajax_list_images', 'uncode_list_images' ) ;
        }
      }

    매번 이런 용량 계산을 하는 언코드도 문제지만, KBoard도 굳이 세션을 써야 했나 생각이 듭니다.