embed

PHP

【WordPress】URLを自動でブログカードに変換する機能(embed)を停止させる方法

更新日:2023/03/08

WordPressは投稿内容にURLがあると自動でブログカード(投稿埋め込み・embed)に変換します。
しかし場合によっては、変換して欲しくないこともあります。

そこでWeb表示時にURLをブログカードに変換させない方法をお伝えします。

 

自動投稿埋め込みを停止させるコード

投稿内容のURLを認識して投稿埋め込みに変換する機能は、次のコードで停止できます。

add_action('init',function(){
	global $wp_embed;
	remove_filter('the_content', array( $wp_embed, 'autoembed' ),8);
});

 

解説

URLを認識するフィルターフックは、wp-includes\class-wp-embed.phpWP_Embedクラスで登録されています。

class WP_Embed {
	・・・省略
	public function __construct() {
		・・・省略

		// Attempts to embed all URLs in a post.
		add_filter( 'the_content', array( $this, 'autoembed' ), 8 );
		add_filter( 'widget_text_content', array( $this, 'autoembed' ), 8 );
		add_filter( 'widget_block_content', array( $this, 'autoembed' ), 8 );

		・・・省略
	}

URLの自動認識をおこなっているのは、WP_Embedクラスのautoembedメソッドです。

コードを見ると、WP_Embedクラスのインスタンス生成時にコンストラクターで登録されています。
そこで、インスタンスを作成しているコードを探します。

wp-settings.phpで、作成されていました。

$GLOBALS['wp_embed'] = new WP_Embed();

ここまでわかれば、あとはフィルターフックから除外すればOKです。
タイミングは、initフィルターです。

add_action('init',function(){
	global $wp_embed;
	remove_filter('the_content', array( $wp_embed, 'autoembed' ),8);
});

 

問題点

今回の方法はブロックエディター上での変換を停止できません。
方法を調査しましたが、非常に手間がかかりそうなので今回は保留にしました。

ただし、プレビューやWebページとして表示した際にはURLのまま表示されます。
対応するにはJavaScriptもからんでくるので、少し難しい印象です。

今回は、難航しそうなので放置です。

WordPressはHTMやCSSの知識も必要。総合的な知識を身につけよう。

更新日:2023/03/08

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。