WordPress 포스팅 최적화 02 : GeneratePress 테마 Prism script 적용, Code block line number, Copy Button

워드프레스 편집기로 글을 쓸 때 마우스를 많이 써야하는 것에 불편함을 느껴서 고민을 하다가, 로컬에서 마크다운으로 글을 작성하고 워드프레스 편집기에 복붙만 하면 되는 환경을 만들어 보고 있다. 이번엔 GeneratePress 테마에 Prism을 적용한다.

개요

깃허브 디폴트 스타일의 코드 블럭은 라인 넘버를 표시하지 않는다. 나는 코드 블럭에 라인 넘버(행 번호, line number)와 복사하기 버튼(Copy Button)을 표시하고 싶다.

020_img_01_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
Prism script 적용 전 코드 블럭

스트립트 선택 : Prism

Prism 이란

Prism은 웹 페이지에서 코드 문법을 강조 표시하기 위해 사용되는 스크립트이다. 가볍고 디자인의 폭이 넓은건 물론이고, 많은 언어를 지원하고, 웹 페이지에 적용하기 쉽기 때문에 많은 기술 블로그에 사용되고 있다. 물론 유명한 스크립트이니 만큼 워드프레스 플러그인으로도 다운로드 받을 수 있는데, 이번에는 수동으로 GeneratePress 테마에 Prism script를 적용해 포스팅 내부의 Code block 디자인을 변경한다.

020_img_02_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
Prism

Prism js, css 커스텀 & 파일 다운로드

옵션 선택1 : Compression level, Themes, Languages

Prism 사이트에 들어가서 DOWNLOAD를 누르면 수 많은 옵션이 우리를 기다리고 있다. 먼저 Compression level은 Minified version으로 충분하다. Core는 그대로 두고 Themes은 취향에 맞게 골라주면 된다.

020_img_03_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
Prism Download Option1

Languages는 앞으로 블로그에 사용할 언어를 선택하면 된다. 많이 선택하면 당연하게도 무거워지니 사용할 것 같은 언어들만 선택해준다.

020_img_04_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
Prism Download Option : Languages

옵션 선택2 : Plugins

그 다음은 플러그인을 선택한다.

020_img_05_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
Prism Download Option : Plugins

선택한 플러그인에 대해서 간단하게 설명하겠다. 자세한 사항은 plugins 페이지 참고.

  • Line Highlight
    • 지정한 행이나 행 범위를 하이라이트
    • 사용법1 : pre태그에 data-line 속성으로 강조하고 싶은 행을 번호로 지정
    • 사용법2 : pre태그에 id를 설정한 경우, #<id>.<行番号>
입력 예시 (사용법1)
<!-- <pre data-line="2,5-7"> --> <pre data-line="2,4-6"> <code class="language-python"> # Hello World import pprint def main(): hello_words = ["Hello", "World!"] pprint(hello_words) main() </code> </pre>
출력 예시 (사용법1)
# Hello World import pprint def main(): hello_words = ["Hello", "World!"] pprint(hello_words) main()
  • Line Numbers
    • 코드 블럭 좌측에 행 번호를 표시
    • 사용법1 : pre태그 class속성에 line-numbers를 지정
    • 사용법2 : Line Highlight의 사용법2와 함께 pre태그 class속성에 linkable-line-numbers를 지정
    • 사용법3 : pre태그에 data-start속성으로 시작하고 싶은 행번호(양,음의 정수)를 지정
입력 예시 (사용법1)
<pre class="line-numbers"> <code class="language-python"> # Hello World import pprint def main(): hello_words = ["Hello", "World!"] pprint(hello_words) main() </code> </pre>
출력 예시 (사용법1)
# Hello World import pprint def main(): hello_words = ["Hello", "World!"] pprint(hello_words) main()
  • Normalize Whitespace
    • 코드 블럭 내의 공백을 조작
    • 기본적으로 모든 설정이 적용되어있음, 필요에 따라서 설정 제거 혹은 수정(true/false, 정수 변경)
    • 설정 일괄
      • remove-trailing : 모든 행 마지막의 공백을 삭제
      • remove-indent: 코드 블럭 전체에 과한 인덴트가 포함된 경우 적절하게 인덴트를 삭제
      • left-trim : 코드 블럭 선두의 화이트 스페이스를 전부 삭제
      • right-trim : 코드 블럭의 하부의 화이트 스페이스를 전부 삭제
      • break-lines : 긴 행을 일정한 길이로 개챙 (디폴트는 80문자)
      • indent : 각 행에 일정 수의 탭을 추가
      • remove-initial-line-feed : 코드 블럭의 선두에서부터 개행을 1개 삭제
      • tabs-to-spaces : 전체의 탭을 기정한 수의 스페이스로 변환 (디폴트는 4스페이스)
      • spaces-to-tabs : 지정한 수의 스페이스를 탭으로 변환 (디폴트는 4스페이스)
  • Toolbar
    • 코드 블럭 상단에 버튼을 간단하게 등록할 수 있는 플러그인용 툴바
    • Copy to Clipboard Button 플러그인을 선택하면 자동으로 선택
    • Copy to Clipboard Button 플러그인 이외에 사용할 예정은 없으므로 이 포스팅에서는 자세한 사용법 생략
  • Copy to Clipboard Button
    • 코드를 클립보드에 복사할 수 있는 버튼을 추가
    • 따로 설정은 없이 디폴트로 적용됨

js, css 다운로드

옵션을 다 선택했다면 js, css파일을 각각 다운로드를 해주면 된다.

020_img_06_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
Prism Download

워드프레스 블로그 GeneratePress 테마에 적용

Amazon Lightsail에서 ssh-key 획득

다운받은 js, css파일을 서버에 전송해주기 위해서 ssh-key를 획득한다. Amazon Lightsail 메인 페이지 우측 상단에 ‘계정’으로 접속한다.

020_img_07_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
Amazon Lightsail에서 ssh-key 획득1

‘SSH 키’ 탭으로 이동해서 기본키의 pem파일을 내려받는다. 새로 키를 생성해줘도 상관 없다. 이 키가 있으면 내 서버에 인증 없이 접속할 수 있게 되니 관리에 주의해야한다.

020_img_08_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
Amazon Lightsail에서 ssh-key 획득2

자세한 설명은 Lightsail 리눅스 또는 유닉스 인스턴스에 연결 페이지를 참고하면 된다.

scp 커멘드로 파일 파일 업로드 # GeneratePress 테마 기준

로컬 터미널에서 하기 scp 커멘드로 파일을 복사해 준다.

scp -i <pem파일> <복사할 파일> bitnami@<서버의 퍼블릭 ip>:<복사할 파일이 저장될 폴더>
020_img_09_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
파일 복사

상기 이미지에서는 /opt/bitnami/wordpress/w-admin/css/opt/bitnami/wordpress/w-admin/js에 각각 파일을 복사헤줬는데, 사실 여기가 아니다. Generatepress테마가 사용하는 하위 폴더에 넣어줘야 한다.

  • css파일 : /opt/bitnami/wordpress/w-content/themes/generatepress/assets/css/
  • js파일 : /opt/bitnami/wordpress/w-content/themes/generatepress/assets/js/

에 각각 위치시켜 준다.

그럼 워드프레스 관리자 페이지 > 테마 > 테마 파일 편집기에서 하기 이미지와 같이 prism.js, prism.css 파일이 추가된 게 보일 것이다.

020_img_10_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
추가된 js파일
020_img_11_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
추가된 css파일

권한 에러가 날 경우

나같은 경우 개인키(pem파일) 초기 권한이 644였는데, 이 권한으로 접근을 하려고 하니까 권한 에러가 났었다. 개인키인데 권한이 너무 많이 주어져 있는게 에러의 원인이다.

020_img_12_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
pem파일 권한 에러

권한을 400(소유자만 읽기 가능)으로 변경해 주면 권한 에러는 해결된다.

chmod 400 <pem파일>
020_img_13_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
pem파일 권한 변경

AWS LightSail 엑세스 시에 권한 에러에 대해 페이지를 참고했다.

general.php 수정 # GeneratePress 테마 기준

워드프레스 관리자 페이지 > 테마 > 테마 파일 편집기에서 general.php파일을 수정한다. 하기 코드를 추가해주면 된다.

add_action( 'wp_enqueue_scripts', 'my_prism' ); // prism.jsを有効化 function my_prism() { wp_enqueue_style( 'prism-style', get_template_directory_uri() . '/assets/css/prism.css', array(), GENERATE_VERSION, 'all'); wp_enqueue_script( 'prism-script', get_template_directory_uri() . '/assets/js/prism.js', array(), GENERATE_VERSION, true ); }
020_img_14_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
general.php 수정 : 생성할 코드 추가

html 파일 수정 : 클래스 추가

이제 규칙대로 html파일을 작성해서 업로드하면 된다. 언어 식별은 code태그 class속성에 language-<XXX>(<XXX>는 해당 언어 코드로 대체)를 추가하는 방식이다. 언어별 클래스명 등은 prism의 사용 설명서 페이지를 참고하면 된다.

020_img_15_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
(예시) 플러그인 적용, 언어 식별을 위한 클래스 지정

완성된 코드 블럭

이렇게 완성된 코드 블럭이다. jekyll처럼 간단하게 예쁘게 적용되는건 아니지만 그래도 원하는 기능은 갖춰졌으니 만족이다.

020_img_16_Wordpress 포스팅 최적화 02 GeneratePress Prism script 적용 Code block line number Copy Button.png
Prism script 적용 후 코드 블럭

시리즈 링크

Leave a Comment

인덱스