投稿フォーマット使ってますか?

わたしが自作したテーマでは使ってないのだけれど、お仕事で使う機会がありまして。

その時、ブロックエディタだと投稿フォーマット名の変更が、従来のやり方ではうまくいかなかったんだよね。

どうやらクラシックエディタ用の変更コードとは別に、ブロックエディタ用の変更コードを追加しなければいけないようです。

投稿フォーマットって?

投稿の種類というか表示形式を変えることができる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

バグなのかな?

わたし程度では修正できませんでした(>_<)

だ、誰か・・・