投稿フォーマット使ってますか?
わたしが自作したテーマでは使ってないのだけれど、お仕事で使う機会がありまして。
その時、ブロックエディタだと投稿フォーマット名の変更が、従来のやり方ではうまくいかなかったんだよね。
どうやらクラシックエディタ用の変更コードとは別に、ブロックエディタ用の変更コードを追加しなければいけないようです。
投稿フォーマットって?
投稿の種類というか表示形式を変えることができるWordPressの仕様の1つです。
カスタム投稿タイプとは違って、記事編集画面でフォーマット(表示形式)を変更できるようになります。
▼クラシックエディタでの表示はこんな感じ
▼ブロックエディタでの表示はこんな感じ
従来の投稿フォーマット名の変更方法
今までは gettext_with_context や esc_html などのフィルターフックで、テキストが出力されるときに置換するという方法が一般的でした。
詳しくは以下の記事を見てみてね☆
https://tenman.info/labo/snip/archives/1551
https://www.webopixel.net/wordpress/441.html
これでクラシックエディタなら投稿フォーマット名が変えられるんだけど、ブロックエディタでは変わらない・・・。
ブロックエディタは大分普及してきてる気がするけど、どうかな。
お仕事でWordPressを触らせてもらうことは多いけど、今はブロックエディタ使ってる人の方が多く感じるよ?
ブロックエディタで投稿フォーマットを変更する方法
以下の記事を参照しました。
https://wordpress.stackexchange.com/questions/353393/renaming-post-formats-after-gutenberg
答えはこのページに載ってる通りなんだけど、load_script_translations というフィルターフックを使うみたい。
これはWordPress5.0.2で追加されたフィルターのようです。
以下は私がサンプルを元に書き換えた例です。
function my_theme_post_format_change( $translations, $file, $handle, $domain ) {
if ( 'wp-editor' === $handle ) {
$translations = json_decode( $translations, true );
$translations['locale_data']['messages']['Aside'] = [ 'ニュース' ];
$translations['locale_data']['messages']['Status'] = [ 'お知らせ' ];
$translations = wp_json_encode( $translations );
}
return $translations;
}
add_filter( 'load_script_translations', 'my_theme_post_format_change', 10, 4 );
これでブロックエディタでも投稿フォーマット名が変わるようになります。
注意点として、このコードはブロックエディタのためのものなので、クラシックエディタでも投稿フォーマット名を変更するには、従来のコードも併用する必要があります。
おまけ:固定ページの投稿フォーマット
投稿フォーマットは固定ページでも利用できます。
上記の方法で投稿フォーマット名も変更できます。
が、しかし・・・
変更した投稿フォーマットが保存されません(;´Д`)
※2020年9月25日:WordPress5.5.1現在
困っている人はわたしの他にもいました。
https://github.com/WordPress/gutenberg/issues/19805
https://wordpress.stackexchange.com/questions/341642/post-formats-for-pages-not-saving
バグなのかな?
わたし程度では修正できませんでした(>_<)
だ、誰か・・・