プロパティ参照

RichTextコンポーネントに渡す可能なプロパティのリストについては、GitHubのコンポーネントドキュメントを確認してください

RichTextコンポーネントを使用したコアブロック

RichTextコンポーネントを使用したコアブロックがいくつかあります。各ブロックにリンクされたJavaScript編集機能は、自分のブロックを作成する際のベストプラクティスの参照として使用できます。

  • ボタン: RichTextはボタンのテキストを入力するために使用されます。
  • 見出し: RichTextは見出しのテキストを入力するために使用されます。
  • 引用: RichTextは引用文と引用元のテキストの両方に使用されます。
  • 検索: RichTextは検索フィールドの上のラベルと送信ボタンのテキストの両方に使用されます。

  1. import { registerBlockType } from '@wordpress/blocks';
  2. import { useBlockProps, RichText } from '@wordpress/block-editor';
  3. registerBlockType( /* ... */, {
  4. // ...
  5. attributes: {
  6. content: {
  7. type: 'string',
  8. source: 'html',
  9. selector: 'h2',
  10. },
  11. },
  12. edit( { attributes, setAttributes } ) {
  13. const blockProps = useBlockProps();
  14. return (
  15. <RichText
  16. { ...blockProps }
  17. tagName="h2" // The tag here is the element output and editable in the admin
  18. value={ attributes.content } // Any existing content, either from the database or an attribute default
  19. allowedFormats={ [ 'core/bold', 'core/italic' ] } // Allow the content to be made bold or italic, but do not allow other formatting options
  20. onChange={ ( content ) => setAttributes( { content } ) } // Store updated content as a block attribute
  21. placeholder={ __( 'Heading...' ) } // Display this text before any content has been added by the user
  22. />
  23. );
  24. },
  25. save( { attributes } ) {
  26. const blockProps = useBlockProps.save();
  27. return <RichText.Content { ...blockProps } tagName="h2" value={ attributes.content } />; // Saves <h2>Content added in the editor...</h2> to the database for frontend display
  28. }
  29. } );

一般的な問題と解決策

RichTextコンポーネントを使用していると、いくつかの一般的な問題が発生することがあります。

HTMLフォーマットタグがコンテンツに表示される

テキストフォーマットのHTMLタグ(<strong><em>など)がエスケープされてサイトのフロントエンドに表示される場合、これは保存機能に問題がある可能性があります。保存機能内で、<h2>{ heading }</h2>で値を単に出力するのではなく、<RichText.Content tagName="h2" value={ heading } />(JSX)のようにコードが見えることを確認してください。

不要なフォーマットオプションがまだ表示される

先に進む前に、RichTextコンポーネントを使用することが本当に意味があるかどうかを考えてください。基本的なinputtextarea要素を使用する方が良いでしょうか?フォーマットが可能であるべきではないと思う場合、これらのHTMLタグの方が理にかなっているかもしれません。

RichTextを使用したい場合は、withoutInteractiveFormattingプロパティを指定することで、すべてのフォーマットオプションを排除できます。

許可されるフォーマットを制限したい場合は、コード内でallowedFormatsプロパティを指定できます。詳細については、上記の例やコンポーネントドキュメントを参照してください。

エディタで特定のフォーマットタイプを無効にする

RichTextコンポーネントは、段落ブロック内の画像などのインライン要素を表示するためにフォーマットを使用します。エディタからフォーマットを無効にしたいだけの場合は、unregisterFormatType関数を使用できます。たとえば、インライン画像を無効にするには、次のようにします:

  1. wp.richText.unregisterFormatType( 'core/image' );

適用するには、プラグインまたはテーマに上記のスクリプトをエンキューする必要があります。JavaScriptのチュートリアルでWordPressでJavaScriptを読み込む方法を参照してください。