워드프레스 링크 붙여넣기 자동 <a> 비활성

아래 코드를 functions.php 에 넣으면 됨.

add_action('enqueue_block_editor_assets', function() {
    echo "
    <script>
    window.onload = function() {
        document.addEventListener('paste', function(event) {
            event.preventDefault();
            const text = event.clipboardData.getData('text/plain');
            document.execCommand('insertText', false, text);
        });
    }
    </script>
    ";
});

코드는 enqueue_block_editor_assets 액션으로 구텐베르크 에디터에서만 발동시키고, onload 로 안전하게 불러온 뒤, 모든 붙여넣기 동작에 기본 기능을 제거하고 순수(text/plain) 텍스트만 집어넣게 함.

붙여넣기시 속성 제거하는 운영체제 기본 기능 과 흡사해 보일 수 있지만, 워드프레스 구텐베르크에서는 이 기능으로 붙여넣어도 문자열로 http://*, https://* 를 감지해 자체적으로 작동하는거라 이 기본 기능(Ctrl+Shift+V)으로 링크를 넣어도 막아지지 않음, 때문에 저 코드를 써야함.

링크 뿐만이 아니라 클립보드 내용 자체를 기본 텍스트로 넣는것, 이론적으로는 다른것도 막아져서 더 좋음.

실제로는 구텐베르크가 저 방식만 쓰는게 아니라 모든종류의 붙여넣기 태그가 다 막히진 않음, 어쨌든 목적달성

간단해 보이지만 이것 때문에 고통받고 먹히는걸 찾느라 고생한걸 생각하면 굉장히 유용한 코드.

워드프레스 embed block 제대로 비활성화 와 함께 쓰면 완벽함.