WordPress 6.4で新規インストール時に添付ファイルの表示を行わないという設定が行われました。
emulsion テーマでも、添付ファイルの表示が行われない環境下で適切な動作が行われるかどうか、遅ればせながらチェックを始めました。
添付ファイルが有効の場合
WordPress6.4以前にインストールされたサイトはデフォルトで添付ファイルの表示が有効。
おかしな点
- 画像ファイルで、Openverse から挿入したものは、figcaptionに、引用元へのリンクが表示されますが、添付ファイルページでは、画像しか表示されない。
説明文フィールドなども、テキストを追加しても表示できない。
よーく調べたら、表示できるようでした。
emulsion テーマのブロックテーマ機能では、添付ファイル用の、例えば、image.html等のテンプレートは使用していない。念のため TwentyTwentyfour等のデフォルトテーマとも比較したが、結果は同様だった。
添付ファイルが無効の場合
functions.php に以下を追加
update_option('wp_attachment_pages_enabled', 0);
- メディア編集画面から、添付ファイルへのリンクは消えたが、説明文フィールドは、維持されたままで、このフィールドは添付ファイルの表示以外での使用用途があるのか、困惑
- 添付ファイルと関連のあるブロック機能に、ファイルブロックがありますが、ここには、メディアファイルにリンクするか、添付ファイルにリンクするか選択するセレクトボタンがありますが、無効にしてもなぜか表示し続けています。
emulsion テーマは、添付ファイルの機能にどのように対応すべきなのだろうか?
WordPress6.4ですでにそのような決定がなされたものに対して、6.5の段階で特に反対を表明したりする気持ちはありません。
実際に、添付ファイルを使う人も殆ど皆無なのかもしれません。
誰も使わないものに、手間をかけたくないという事かな。
ただ、「コアを尊重する」という事でいえば、添付ファイルか、メディアリンクか選択するフィールドがあるならば、emulsionテーマは、その機能に即して動作するべきだろうし、説明フィールドも、添付ファイル表示の場合は、動作すべきだろうと考えるのが自然な感じがします。
「手間を惜しむ」というスタンスが本意ではないので、ブロックテンプレートに、attachment.html
を追加しようと考えています。
徒手空拳
Note:
attachment.htmlは、フロントエンドでは反映しますが、サイトエディタで、attachment.htmlを表示した場合、テーマのテンプレートを正常に読み込むことができませんでした。(single.htmlを使って処理している気配です)
このため、サイトエディタで、編集した場合プリビューなどが消失します。
attachment.htmlはサイトエディタで編集はできないので注意してください
emulsion 3.1.4での添付ファイルのプリビュー対応は以下の通りです。
- video
- image
- html
- txt
- audio
- 他はリンクとmime typeの表示
備忘
コアの実装では、アタッチメントのプリビューの表示には、add_filter( 'the_content', 'prepend_attachment' );
によって行われていて、attachment.htmlが適用される場合には、remove_filterで除去する仕組みだった。サイトエディタでの変更は、single.htmlとして行われるため、attachment.htmlに特有のカスタマイズは行われないので、当面は、attachment.htmlの追加としておくこととした。サイトエディタは、テーマのattachment.htmlを正しく読み込めない模様
attachment.htmlを読み込めないというより、previewを表示するために作成したパターンの条件分岐タグがサイトエディタで、意味をなしていないのかもしれない。
...
if ( wp_attachment_is( 'video' ) ) {
printf( '<div class="alignfull is-layout-constrained"><iframe src="%1$s" class="alignwide"></iframe></div>', $url );
printf( '<h2 class="attachment-title">%1$s</h2>', esc_html( $emulsion_post_info->post_title ) );
printf( '<p class="file-type">%1$s</p>', $mime_type );
return;
} elseif ( wp_attachment_is( 'pdf' ) ) {
...
うーん、困ったな。今のところここまでで、ギブ!