WordPress 관리자 화면을 통해 업그레이드 실패할 때

Admin 화면에서 WordPress 업그레이드 버튼을 눌렀으나 실패한 후, 계속해서 시도해도 알 수 없는 오류로 멈추거나 진행이 안될 경우 SQL 테이블에 기록을 지워야 한다.

DELETE * FROM wp_options WHERE option_name = 'core_updater.lock';

 

WP-CLI 툴을 사용해서도 업그레이드할 수 있는데, 이때도 문제가 발생할 수 있다

$ wp --allow-root core update
Updating to version 5.2.4 (en_US)...
Downloading update from https://downloads.wordpress.org/release/wordpress-5.2.4-no-content.zip...
Error: Failed to get url 'https://downloads.wordpress.org/release/wordpress-5.2.4-no-content.zip': cURL error 18: transfer closed with 8714725 bytes remaining to read.

 

이럴 경우 그냥 해당 파일을 따로 받아서 업그레이드에서 지정하면 쉽게 해결된다

$ wget https://downloads.wordpress.org/release/wordpress-5.2.4-no-content.zip
$ wp --allow-root core update ./wordpress-5.2.4-no-content.zip
Starting update...
Unpacking the update...
Success: WordPress updated successfully.

 

언제 고쳐질지 알 수 없지만 매번 경고가 나오지만 해결되지 않는 부분이 있는데, 업그레이드 후 수정해준다

diff --git a/wp-includes/capabilities.php b/wp-includes/capabilities.php
index 1363e1d..e065d60 100644
--- a/wp-includes/capabilities.php
+++ b/wp-includes/capabilities.php
@@ -136,8 +136,6 @@ function map_meta_cap( $cap, $user_id ) {
                case 'edit_post':
                case 'edit_page':
-                       $post = get_post( $args[0] );
+                       $post = isset($args[0]) ? get_post( $args[0] ) : get_post();
+
                        if ( ! $post ) {
                                $caps[] = 'do_not_allow';
                                break;

 

워드프레스 TinyMCE 편집기에 사용자 지정 글꼴 및 크기 추가하기

개요

WP v5 부터는 새로 선보인 블록편집기가 기본 설정이지만 플러그인1https://wordpress.org/plugins/classic-editor/을 통해 여전히 기존 클래식편집기를 사용할 수 있다. 두 편집기 모두 TinyMCE2https://www.tiny.cloud/features를 사용하고, 사용자 지정 폰트 및 글꼴을 추가하기 위해서는 활성테마의 functions.php 파일에 적절한 추가코드 및 필터 설정이 필요하다. 

 

스스로 자작한 테마를 사용하거나 업데이트되지 않는 테마가 아닌이상, 소스를 직접 변경하는 건 좋은 결정이 아니다.  다행히 Code Snippets 플러그인3https://wordpress.org/plugins/code-snippets/를 사용하면 활성테마의 직접 functions.php를 수정하지 않아도 원하는 기능을 추가할 수 있다.  이 플러그인을 사용해서 사용자가 여러 기능을 추가할 수 있는데
태그 자동 삽입이나 Custom Post Type 게시물에 기능을 확장하거나 특정 권한을 가진 사용자에게만 표시하거나 디버깅 기능을 켜고 끄며 CORS 조절 등,  이미 잘 짜여진 수많은 기능이 오픈되어 있어 꼭 사용해야할 플러그인중의 하나다. 

 

추가 코드

웹폰트와 해당 CSS 파일을 준비한뒤 아래 코드를 Code Snippets 항목에 추가하고  Run Snippet Everywhere 로 설정한다:

// 1) 폰트 추가 설정: D2Coding, NanumBarunPen
function add_custom_fonts($init) {

    $stylesheet_url = '/wp-content/uploads/fonts/custom-fonts.css'; // font-face 설정

    if(empty($init['content_css'])) {
        $init['content_css'] = $stylesheet_url;
    } else {
        $init['content_css'] = $init['content_css'].','.$stylesheet_url;
    }

    $font_formats = isset($init['font_formats']) ? $init['font_formats'] : 'Helvetica=helvetica;Symbol=symbol;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;'; // 기본 폰트리스트에서 사용하지 않는 것 제거한 목록
    $custom_fonts = 'D2Coding=d2coding;NanumBarunPen=nanumbarunpen;'; // 추가 폰트를 앞쪽으로 배치
    $init['font_formats'] = $custom_fonts . $font_formats;

  return $init;
}
add_filter('tiny_mce_before_init', 'add_custom_fonts');
// 2) 프론트엔드에서 스타일시트를 로딩
function load_custom_fonts_frontend() {
    // wp_enqueue_style() 함수를 사용하는 것도 나쁘지 않다
    echo '';
}
add_action('wp_head', 'load_custom_fonts_frontend');
add_action('admin_head', 'load_custom_fonts_frontend');
// 3) 폰트 크기 설정
function add_custom_font_sizes( $initArray ){
    $initArray['fontsize_formats'] = "8px 9px 10px 11px 12px 13px 14px 15px 16px 17px 18px 19px 20px 21px 22px 23px 24px 26px 28px 30px 32px 36px 48px 60px 72px 96px";
    return $initArray;
}
add_filter( 'tiny_mce_before_init', 'add_custom_font_sizes' );
 

 

더 자세한 내용은 이 게시글4http://learn.wpeditpro.com/adding-new-wordpress-tinymce-fonts/D2Coding 폰트 설정파일5https://github.com/Joungkyun/font-d2coding 에서 찾을 수 있다. 

 

References   [ + ]

1. https://wordpress.org/plugins/classic-editor/
2. https://www.tiny.cloud/features
3. https://wordpress.org/plugins/code-snippets/
4. http://learn.wpeditpro.com/adding-new-wordpress-tinymce-fonts/
5. https://github.com/Joungkyun/font-d2coding

생각나지 않는 Spacemacs 단축키, 늘 옆에 두는 컨닝페이퍼

Spacemacs 단축키가 어느 정도 사용하다보면 잘 외워질 것 같이 보여도 “사용하지 않으면 도퇴”되는 사람의 머리의 특성 때문에?, 이전에 잘 사용하던 단축키라도  조금만 공백기가 있으면 정작 필요할 때 아무 문제없이 생각나 주질 않는 경향이 있다. 당연히 이럴 때를 위해 컨닝페이퍼Cheatsheet 패키지가1https://github.com/andrwj/cheatsheet 있으면 좋겠다 생각들었고, 하나 찾았는데 버그가 좀 있고 원 저작자가 오랬동안 업데이트를 하지 않고 있어 Emacs Lisp 학습 목적으로 수정하며 사용중이다. 

 

 

 

기본 단축키 설정이 없으므로 사용자가 반드시 설정해야 한다. 아래 설정에선 단축키로  vertical-bar 를  할당한다.

 

;; https://github.com/andrwj/cheatsheet
(load-file "~/.emacs.d/private/cheatsheet/cheatsheet.el")
(when (require 'cheatsheet)
  (define-key evil-normal-state-map (kbd "|") 'toggle-cheatsheet-window)

  (cheatsheet-add-group 'Search
       '(:key "SPC /" :description "helm-ag")
       '(:key "SPC s s" :description "helm-swoop")
       '(:key "SPC f y y" :description "파일전체 경로 표시 및 복사")
       '(:key "SPC g l l" :description "브라우저 열어서 저장소에 있는 현재파일 위치 표시")
  )
  ;; 생략..
)
 

 

  • 가로 에디터 공간이 넉넉하면 세로로 분할된 윈도우에서 열린다. 또는 SPC  w  L  등의 키로 위치를 옮길 수 있다.
  • Cheatsheet 윈도우를 닫을 때도 같은 단축키를 사용한다. (토글)  그러나 Cheatsheet 윈도우 안에 포커스가 있을 때는 기본 설정인  로만 닫힌다.
  • Cheatsheet 윈도우에 포커스를 둔 상태에서 윈도우가 닫히면 (임시 버퍼를 가리지 않고) 가장 직전에 포커스를 받았던 버퍼로 이동한다. 
  • 단축키 설정이 듣지 않는 Treemacs 등에서는 해당 모드에서 toggle-cheatsheet-window 함수를 호출하도록 설정을 추가해야 한다.

 

References   [ + ]

1. https://github.com/andrwj/cheatsheet