禁用 WordPress Embed 引用功能
最近整理博客的时候,发现很多链接突然自己变样了,如果链接的网站也是用的 WordPress 的话,那么博客直接就把标题、摘要、图片全都给贴出来了。刚开始还以为这是模板问题。后来发现不管什么模板都这样。查了下代码,发现引用部分的内容全都带着 wp-embed 的字样。那么这个应该是 WordPress 的内部功能。网上查了一下,原来从 WordPress 4.4 版本后。Wordpress 就开始可以自动引用文章了。不过对于一直用 HTML 文本编辑器的 Forece 来说。这个功能实在是没用。
如果嫌懒的话,那么直接安装插件 Disable Embeds ,如果想折腾代码的话,那么请看下边:
禁用 WordPress Embed 引用功能,将以下代码贴在主题 functions.php 中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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; } |
或者贴这个缩小版的也可以。
1 2 3 4 | function my_deregister_scripts(){ wp_dequeue_script( 'wp-embed' ); } add_action( 'wp_footer', 'my_deregister_scripts' ); |
如果还不管用的话,再加上
1 |
1 2 3 4 | remove_shortcode( 'embed' ); remove_filter( 'the_content', [ $GLOBALS['wp_embed'], 'autoembed' ], 8 ); remove_filter( 'the_content', [ $GLOBALS['wp_embed'], 'run_shortcode' ], 8 ); remove_action( 'edit_form_advanced', [ $GLOBALS['wp_embed'], 'maybe_run_ajax_cache' ] ); |