WordPress 4.4版本以后禁用wp-embed的正确方法

博客2年前 (2021)发布 铭创网络
526 0 0
Elementor编辑器

自从WordPress 4.4 版本更新以来,主题无缘无故被新增了个 wp-embed.js,其实表面上是增加了一个 js 文件,但实际的逻辑不止如此,鉴于这个功能实在没什么作用,我们就来把它去除。

庆幸的是 WP 官方为此开发了一个插件,大家可以使用插件来禁用:Disable Embeds,如果不想安装这个插件,你也可以将下面的代码复制到主题的 functions.php 文件即可。

/**
 * Disable embeds
 */
if ( !function_exists( 'disable_embeds_init' ) ) :
   function disable_embeds_init(){
      global $wp;
      $wp->public_query_vars = array_diff($wp->public_query_vars, array('embed'));
      remove_action('rest_api_init', 'wp_oembed_register_route');
      add_filter('embed_oembed_discover', '__return_false');
      remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
      remove_action('wp_head', 'wp_oembed_add_discovery_links');
      remove_action('wp_head', 'wp_oembed_add_host_js');
      add_filter('tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin');
      add_filter('rewrite_rules_array', 'disable_embeds_rewrites');
   }
   add_action('init', 'disable_embeds_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;
   }
   function disable_embeds_remove_rewrite_rules(){
   add_filter('rewrite_rules_array', 'disable_embeds_rewrites');
      flush_rewrite_rules();
   }
   register_activation_hook(__FILE__, 'disable_embeds_remove_rewrite_rules');

   function disable_embeds_flush_rewrite_rules(){
      remove_filter('rewrite_rules_array', 'disable_embeds_rewrites');
      flush_rewrite_rules();
   }
   register_deactivation_hook(__FILE__, 'disable_embeds_flush_rewrite_rules');
endif;
© 版权声明
Vultr VPS 重磅限时优惠

相关文章

暂无评论

暂无评论...