【WordPress】マストドンのURLを貼り付けてトゥートを埋め込む様にカスタマイズ

PHP

前々回、ブログ内で発表させていただきました、「チャリティーT-シャツショップを立ち上げ、一般財団法人奈良の鹿愛護会 に寄付致しました。」の記事を公開しました。

この中にマストドンの埋め込みが表示されているかと思います。

実はこれプラグインを使用せずに実装しています。

「Mastodon Embed」というプラグインもあり、別にPHPをいじる必要もなく実装が出来るのですが、プラグインを大量に入れると管理が大変になってしまうので僕はfunctions.phpで実装しました。

プラグインでの実装方法はこちらを御覧ください。

以下は実装方法です。

functions.phpに記入

テーマのテンプレート、functions.phpに以下のコードを記入します。


new Mstdn_Link_Builder();
/**
 * Class Name: Mstdn_Link_Builder
 *@author @ottanxyz
 */
class Mstdn_Link_Builder {
	function __construct() {
		wp_embed_register_handler(
			'mstdn_link_builder',
			'/^(https:\\/\\/mstdn\\.jp\\/@([a-zA-Z0-9]+)\\/[0-9]+)$/i',
			array( &$this, 'handler' )
		);
		add_shortcode( 'mstdn', array( &$this, 'display' ) );
	}
	public function handler( $matches, $attr, $url, $rawattr ) {
		$response = wp_remote_get( $url );
		$link = $response['headers']['link'];
		preg_match( '/([0-9]+)\.atom/i' , $link, $code );
		$user = $matches[2];
		return "[mstdn user=\"${user}\" code=\"${code[1]}\"]";
	}
	public function display( $p ) {
		if ( ! isset( $p['code'] ) || ! $p['code'] ) {
			return;
		}
		if ( ! isset( $p['user'] ) || ! $p['user'] ) {
			return;
		}
		echo '<iframe src="https://mstdn.jp/users/' . $p['user'] . '/updates/' . $p['code'] . '/embed" style="width:100%;overflow:hidden" frameborder=0 height="auto" scrolling="no"></iframe>';
	}
}

トゥートのURLをコピーする

表示したいマストドンのトゥートのURLをコピーします。

まず、マストドンのタイムラインから表示したいトゥートの日付をクリック

ページが切り替わりトゥートの個別ページが表示されますので、そのURLをコピーします。

投稿又は固定ページに貼り付ける

後はURLを貼り付けるだけです。

動かない場合は素直に「Mastodon Embed」を使用しましょう。

マストドンで活動しつつ、Wordpressでブログを書いている方には便利なコードだと思います。是非

参考にしたサイト

WordPressにMastodonのURLを貼り付けただけでトゥートを埋め込む方法

WordPress記事にMastodonのトゥートを埋め込むプラグイン「Mastodon Embed」の使い方

コメント

タイトルとURLをコピーしました