WordPress 4.4 から、簡単に WordPress の記事を本文中に埋め込めるようになりました。
こんなかんじ。
WordPress 4.4 “Clifford”
上記公式サイトによりますと
他の WordPress サイトに投稿を埋め込めるようになりました。エディターに投稿の URL を入れるだけで、設定したタイトル、抜粋、アイキャッチ画像を備えた埋め込みプレビューがすぐに表示されます。
とのこと。実際、URLを入れるだけなので簡単です。
で、この埋め込み表示のカスタマイズ方法を、ちょっとまとめます。
テンプレートをカスタマイズする
デフォルトで使用されるテンプレートは /wp-includes/embed-template.php
に配置されています。
これを自分のテンプレートフォルダにコピーして、自由に編集すればOKです。
たとえば初期状態だと日付の表示はありませんが、適当にテンプレート内に <?php the_date() ?>
などと記述すれば、日付が表示されるようになります。
で、カスタマイズしたテンプレートファイルを使用するために、functions.php にこんな感じの記述をしてください。
// embed: テンプレートファイルの切り替え function my_embed_template() { // 使用するテンプレートファイルを返す return plugin_dir_path(__FILE__) . 'embed-template.php'; } add_filter('embed_template', 'my_embed_template');
CSS をカスタマイズする
新しくCSSファイルを読み込ませたい場合は、フィルターフックの embed_head
を使います。
// embed: CSSファイルを追加 function my_embed_head() { wp_enqueue_style('wp-embed-template-org', get_stylesheet_directory_uri() . 'new_css_file.css'); } add_filter('embed_head', 'my_embed_head');
また、もしデフォルトのCSSファイルを読み込ませたくない場合は、以下の1行を追加します。
// embed: デフォルトCSSを読み込まない remove_action('embed_head', 'print_embed_styles');
iframe出力をカスタマイズする
embed機能は iframe を出力するのですが、そこにもフィルタが用意されています。
// embed: iframe出力をカスタマイズ function my_embed_oembed_html($content) { // ここで $content をゴニョゴニョして return すればOK return $content; } add_filter('embed_oembed_html', 'my_embed_oembed_html');
ブラウザから表示を確認する
URLの末尾に /embed
と付加、もしくはGET で embed
というパラメタを渡せば、embed表示をブラウザ上で確認できます。
こんなかんじです。
https://ja.wordpress.org/2015/12/10/clifford/embed
http://www.shakaika.jp/?p=12008&embed
embed 機能を無効にする
埋め込み機能を無効にしたい場合は、以下のコードで可能でした。
// embed: 埋め込み機能を無効にする function my_disable_wp_oembed() { remove_action( 'wp_head', 'wp_oembed_add_host_js' ); } add_action('init', 'my_disable_wp_oembed', 9999);
また、"disable-embeds" というプラグインもあるとのこと。
結果、こんな風にカスタマイズできました。
日本の産業や学問を支えてきた地下施設、スーパーカミオカンデに潜入!ジオ・スペース・アドベンチャー後編
はい。 以上、こんなかんじ。
(内容は WordPress 4.4 / 2016.01.03 時点のものです)