HTML, CSS, JS, PHP 등 언어를 블로그에 올릴 때 플러그인 없이 사용하고 싶어졌다.
Prism.js랑 Highlight.js 중에 고민하다가 Prism.js가 더 가볍다고 해서 Prism.js로 결정했다.
Prism.js 이용하여 구문 강조 하는 방법 알아보자.
구문 강조 (Syntax Highlighter)
구문 강조 파일
구문 강조 파일을 CDN 주소로 테마에 추가하건, 파일 자체를 다운로드 받아서 내 테마에 추가하건 파일이 테마에 추가되어있어야한다.
- CDN 이용
jsDelivr, cdnjs, UNPKG 중 한 곳에서 CDN 주소를 받아서 사용할 수 있다.
위 사이트 중 jsDelivr를 선택, 필요한 언어, 플러그인 등을 선택해봤다.
jsDelivr에서 CDN 주소 복사
-
jsDelivr 접속
-
필요한 언어, 플러그인 선택 » [Show & Configure all links]

-
JS 아래에 있는 [COPY ALL] 선택 » 메모장에 붙여넣기 진행 » CSS 아래에 있는 [COPY ALL] 선택 » 메모장에 붙여넣기 진행

-
얼만큼 선택했는지 확인해볼까?
언어 선택
플러그인 선택
플러그인 CSS 선택
CND 이용하려니 Functions.php에 추가 해야 할 JS, CSS 파일이 굉장히 많아 지는 것 같다.
- 다운로드
Prism 홈페이지에서 js, css 파일들을 다운로드 받을 수 있다.
Prism 홈페이지에서 js, css 파일 다운로드 받는 방법을 알아보자.
다운로드 받는 방법
-
Prism 홈페이지 접속 » [DOWNLOAD] 선택

-
필요한 항목 선택

-
[DOWNLOAD JS] 선택하여 JS 파일 다운로드 » [DOWNLOAD CSS] 선택하여 CSS 파일 다운로드

다운로드 받았다면 웹서버 » wp-content/themes/’테마 이름’ 폴더 내에 업로드한다.
테마에 적용
CDN 이용
내 테마의 functions.php 파일에 아래 코드를 추가한다.
functions.php
wp_enqueue_style( 'prismCSS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/toolbar/prism-toolbar.min.css' );
wp_enqueue_style( 'prismCSS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.css' );
wp_enqueue_style( 'prismCSS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/inline-color/prism-inline-color.min.css' );
wp_enqueue_style( 'prismCSS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/command-line/prism-command-line.min.css' );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-c.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-core.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-cpp.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-clike.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-csharp.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-css.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-docker.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-excel-formula.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-go.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-java.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-javascript.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-json.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markdown.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markup.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-nginx.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-php.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-powershell.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-python.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-scss.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-shell-session.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sass.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sql.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-swift.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-visual-basic.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-xml-doc.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/show-language/prism-show-language.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/toolbar/prism-toolbar.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/inline-color/prism-inline-color.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/download-button/prism-download-button.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/command-line/prism-command-line.min.js', array(), '1.29.0', true );
wp_enqueue_script( 'prismJS', get_template_directory_uri() . 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js', array(), '1.29.0', true );
파일 다운로드
내 테마의 functions.php 파일에 아래 코드를 추가한다.
functions.php
구문 강조 사용
포스트에 구문 강조 코드 추가
구문 강조 코드를 넣을 때는 위 코드를 사용해야 하며 [alias] 부분엔 아래 표를 참고하여 사용하고자 하는 언어의 별칭을 입력해야 한다.
별칭은 한 가지만 골라서 작성한다.
예: language-markup, language-js 등…
별칭 확인
Languages |
Alias |
Markup |
markup, html, xml, svg, mathml, ssml, atom, rss |
CSS |
css |
C-like |
clike |
JavaScript |
javascript, js |
Bash |
bash, sh, shell |
C |
c |
C# |
csharp, cs, dotnet |
C++ |
cpp |
Docker |
dockerdockerfile |
Excel Formula |
excel-formula, xlsx, xls |
Go |
go |
Java |
java |
JSON |
json, webmanifest |
Markdown |
markdown, md |
nginx |
nginx |
PHP |
php |
PowerShell |
powershell |
Python |
python, py |
Sass (Sass) |
sass |
Shell session |
shell-session, sh-session, shellsession |
Sass (SCSS) |
scss |
SQL |
sql |
Swift |
swift |
Visual Basic |
visual-basic, vb, vba |
XML doc (.net) |
xml-doc |
마무리
prism.js는 한 줄 한 줄 마우스 가져갔을 때 보여지는 효과(hover effect)를 설정할 수 없다.
START BLOGGING 101 - How to Add Prism.js Syntax Highlighting to Your WordPress Site