상현에 하루하루
All 개발자의 하루

구텐베르그 자동임베드 비활성화하기

( 업데이트: )

구텐베르그에서 링크를 삽입하면 무조건적으로 embeded 되는 이러한 UX 나에게는 너무나 불편했다. 단지 링크로 삽입하고 싶었을 뿐인데

해당 구텐베르그의 자동임베트를 비활성화하는 방법은

functions.php에 해당 액션을 추가해주면 된다.

<?php
 /**
 구텐베르그에서 링크를 자동으로 임베디드로 바꾸는 것을 비활성화
 *
 @author       Hansanghyeon
 @copyright    Hansanghyeon 999@hyeon.pro
 **/ 
 function disable_embeds_code_init()
 {
   // Remove the REST API endpoint.
   remove_action('rest_api_init', 'wp_oembed_register_route');
   // Turn off oEmbed auto discovery.
   add_filter('embed_oembed_discover', '__return_false');
   // Don't filter oEmbed results.
   remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
   // Remove oEmbed discovery links.
   remove_action('wp_head', 'wp_oembed_add_discovery_links');
   // Remove oEmbed-specific JavaScript from the front-end and back-end.
   remove_action('wp_head', 'wp_oembed_add_host_js');
   add_filter('tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin');
   // Remove all embeds rewrite rules.
   add_filter('rewrite_rules_array', 'disable_embeds_rewrites');
   // Remove filter of the oEmbed result before any HTTP requests are made.
   remove_filter('pre_oembed_result', 'wp_filter_pre_oembed_result', 10);
 }
 add_action('init', 'disable_embeds_code_init', 9999);
 function disable_embeds_tiny_mce_plugin($plugins)
 {
   return array_diff($plugins, array('wpembed'));
 }
 function disable_embeds_rewrites($rules)
 {
   foreach ($rules as $rule => $rewrite) {
     if (false !== strpos($rewrite, 'embed=true')) {
       unset($rules[$rule]);
     }
   }
   return $rules;
 }

embeded되는 ux가 비활성화되는 것이지 아직 링크가 링크로만 삽입되는 것은 불가능했다.

embeded되는 프로레스가 없어서져서 바로 링크로 변환하면 된다.