[카테고리:] 워드프레스 개발

  • FakerPress: 테스트용 포스트 일괄 생성 플러그인

    지난번 WP CLI를 소개하는 포스팅 때 개발 테스트를 위해 일괄적으로 임의의 포스팅을 대량으로 생성하는 명령어인 wp post generate에 대해 소개하였다.

    그런데 이 명령어는 포스트의 내용까지는 대량 작성하기가 어려운 점이 있어 단순히 포스트 수만 채우는 정도까지만 유용하다. 그러므로 포스트의 내용이 제대로 출력되는지, 스타일이 제대로 반영되는지 등의 디테일한 사항까지 체크할 수 있으려면 조금 역부족이다.

    그럴 때 정말 유용한 플러그인이 바로 FakerPress 이다. 개발 초기 테스트를 위한 포스트를 원하는대로 생성이 가능하다. 오늘은 이 플러그인을 간단히 소개할까 한다.

    FakerPress는 오픈 소스 플러그인이다. WordPress 플러그인 목록에서 간단히 다운로드 받아 설치할 수 있으며 활성화 즉시 사용 가능하다.

    포스트 생성시 갯수는 물론이고 해당 포스트에 카테고리, 태그, 본문 작성시 삽입할 구조까지 얼추 지정 가능하다. 특히 랜덤한 이미지까지 삽입할 수 있어 매우 유용하다.

    포스트, 코멘트, 텀, 유저 생성이 가능하다.
    포스트의 필드를 적절히 조절 가능
    포스트 콘텐츠 구조까지 적당히 조절 가능
    택소노미나 메타 필드까지 조절 가능

    이렇게 랜덤 생성된 포스트는 모두 FakerPress가 작성한 가짜 포스트라는 태깅이 되어 있어 모두 손쉽게 삭제 가능하다. 설정 페이지로 가서 Let It Go!만 입력하면 차후 언제나 깔끔하고 간단하게 생성한 포스트를 제거 가능하다.

    가버려!

    가짜 포스트를 나름 의미 있게 일일이 생성하는 것은 꽤 귀찮은 일인데, 이 플러그인을 쓰면 꽤 유용하다. 테마 개발자라믄 사용을 강력히 추천한다.

  • 워드프레스 자동 설치 스크립트 샘플

    이번 포스팅은 특정 디렉토리를 기준으로 DB 생성, 소스 다운로드, 설치 및 초기 셋팅을 정해진대로 수행하는 스크립트의 예제를 올린다.

    그동안 간단히 만들어 사용한 거고 WP-CLI를 사용하는 좋은 예시인 것 같다. 코드는 gist 에서 확인할 수 있다.

    이 코드에서 처음에 지정해 줘야 할 변수값들이 있다. 확인해 보자.

    WP_ROOT="/path/to/wp/root"
    DB_ROOT_PASS='0000'
    
    ADMIN_USER=user
    ADMIN_EMAIL=user@email.com
    ADMIN_PASS=pass
    
    SMTP_USER=user@gmail.com
    SMTP_PASS=passCode language: JavaScript (javascript)

    WP_ROOT은 워드프레스 설치들을 모아놓은 상위 디렉토리이다. 여기가 만약 /home/changwoo/develop/wordpress였다면 이 디렉토리의 서브디렉토리별로 워드프레스 설치본이 하나씩 생성된다.

    ADMIN_USER, ADMIN_EMAIL, ADMIN_PASS는 워드프레스 최초설치시 생성하는 관리자의 로그인, 이메일, 패스워드가 된다. 적절히 셋팅해두자.

    SMTP_USER, SMTP_PASS는 기본으로 지메일 SMTP 세팅을 정해두고, 사용자와 패스워드를 입력한다. 지메일 계정의 낮은 보안 앱 접근을 허용해 두어야 하는 것을 잊지 말자.

    중간에 내가 사용하는 naran 프로젝트 플러그인 몇가지도 추가되어 있다. 이것을 정상적으로 실행하려면 git이 설치되어 있어야 한다. 또한 WP CLI를 기본적으로 사용하므로 반드시 설치되어 있어야 하고.

    wp_install 스크립트는 다음과 같이 실행될 것이다.

    $ wp_install foo
    ... (설치 메시지)
    Successfully installed. DB USER/PASS: foo / IDLcKVrGJ4Ju

    예를 들어 WP_ROOT/home/changwoo/develop/wordpres였다면 이 아래 foo라는 디렉토리 아래 워드프레스가 설치된 것이 보일 것이다. 그리고 이 워드프레스의 도메인은 http://foo.dev.site로 설정되어 있다. 나머지 서버 설정은 따로 진행하면 된다.

    스크립트는 예시일 뿐이다. 각자의 환경에 따라 적절히 변경해서 사용하도록 하자.

    wp_install gist

  • wp-cli 사용하기 #3

    어제의 포스팅에 이어 wp-cli에 대해 소개하는 포스팅을 작성한다. 오늘은 아마도 마무리하는 글에 걸맞게 실무적으로 유용한 명령들이 될 것이다.

    (더 보기…)
  • wp-cli 사용하기 #2

    지난 포스트에 이어 wp cli 사용에 대해 계속 포스팅한다. 이 멋진 툴을 소개하려니 신난다. 한번에 좌르륵 풀어내기보다는 아껴서 조금씩조금씩 이야기하고 싶다. 자, 우선 무엇부터 시작할까?

    (더 보기…)
  • wp-cli 사용하기 #1

    의식의 흐름대로 흘러가는 1일 1워프 중이다. 적당히, 진짜 적당껏 분량 조절해서 하루에 하나씩 원하는 내용을 적는 중이다.

    오늘은 드디어 wp-cli의 이야기를 하게 된다. 워드프레스 개발자로서 반드시 숙지해야 할 녀석, 그리고 할 이야기가 무지무지 많은 녀석이다.

    (더 보기…)
  • 워드프레스 플러그인/테마 올바르게 번역하기

    잘못된 방법

    예전에 워드프레스 플러그인 만들기라는 문서를 작성한 적이 있다. 꽤 오래된 문서인데 (벌써 햇수로 6년 되었다!), 워드프레스 API는 여기서 그렇게 변경된 건 없는 것 같다.

    이 문서는 귀찮아서 업데이트하지 않고 있는데, 여기서의 텍스트 번역 부분은 그 당시 워드프레스 환경 및 일반적인 PHP 애플리케이션에 대해서는 맞다. 그러나 더이상 이 방법이 올바르다고 보기 어렵다.

    왜냐면 PoEdit을 이용한 소스 검색은 플러그인/테마의 헤더까지 번역문을 생성하지 않기 때문이다.

    올바른 방법

    플러그인 목록에 플러그인 제목과 나머지 헤더 내용까지 정확하게 번역하려면 wp-cli를 사용하는 것이 좋다. 이 앱에 대해서는 따로 소개하는 포스팅을 작성할 생각인데, 오늘은 맛보기로 미리 언급하기로 하자. 🙂

    wp cli 에는 i18n 명령이 있다. i18n은 ‘internationalization’을 간단히 줄여 쓸 때 자주 사용한다. 욕 아니다. i와 n 사이에 정확히 18글자가 있기 때문이다. 굳이 번역하면 ‘국제화’ 정도?

    사족으로, 이에 반대되는 개념이 지역화, 즉 ‘localization’ 인데 이것도 쓰기 어렵다고 ‘l10n’이라고 쓴다.

    i18n 명령의 서브 명령어로 ‘make-pot’과 ‘make-json’ 둘이 있다.

    make-json블록 에디터가 등장한 이후 자바스크립트에서 보다 편리하게 번역문을 처리하기 위한 새 방법을 지원하는 명령어고, 오늘 포스팅의 범위를 살짝 벗어난다.

    그럼 make-pot을 살펴보자. foo라는 플러그인을 예시로 레시피를 만들어 보자. 참고로 도메인은 bar라고 가정하자. 즉 소스 코드에서 __( 'Hello, World!', 'bar' ); 처럼 번역 텍스트를 작성했다는 뜻이다.

    cd <wordpress_path>/wp-content/plugins/foo
    mkdir languages # 디렉토리가 만들어지지 않았다면.
    wp-cli i18n make-pot . ./languages/bar.pot --domain=barCode language: Bash (bash)

    wp-cli로 번역 텍스트를 추출하면 기특하게 헤더 텍스트까지 알아서 잘 고려한다. 게다가 커맨드라인 방식이라 스크립트 처리하기 용이하다.

    이후 PoEdit을 이용해 번역문을 만든다. 만약 한국어로 번역했다면, 번역 파일의 이름은 bar-ko_KR.po 가 된다.

    기타: XDebug 사용시 트러블슈팅

    아마 xdebug를 사용하면 wp-cli로 pot 파일 생성시 ‘Maximum function nesting level of …’ 같은 에러를 만날 것이다. 이것은 xdebug가 디버깅을 위해 함수 호출 레벨을 낮춰 두기 때문이다. 아마도 소스 코드에서 번역문을 스캔할 때 꽤 많은 함수 중첩이 필요한가 보다.

    에러가 발생한다면 아래와 같은 명령어를 사용해 보자.

    php -d xdebug.max_nesting_level=512 $(which wp-cli) i18n [이후 동일]Code language: Bash (bash)

    참고로 아래처럼 번역에 불필요한 모듈까지 제거하면 속도 향상이 있다고 한다.

    php -n -dextension=phar.so \
        -dextension=json.so \
        -dextension=mbstring.so \
        -d xdebug.max_nesting_level=512 \
        $(which wp-cli) i18n (이후 동일)Code language: JavaScript (javascript)

    출처: Invoking wp i18n make-pot fails when Xdebug is enabled