開発ガイドライン

使用法

  1. import { useState } from 'react';
  2. import { QueryControls } from '@wordpress/components';
  3. const QUERY_DEFAULTS = {
  4. category: 1,
  5. categories: [
  6. {
  7. id: 1,
  8. name: 'Category 1',
  9. parent: 0,
  10. },
  11. {
  12. id: 2,
  13. name: 'Category 1b',
  14. parent: 1,
  15. },
  16. {
  17. id: 3,
  18. name: 'Category 2',
  19. parent: 0,
  20. },
  21. ],
  22. maxItems: 20,
  23. minItems: 1,
  24. numberOfItems: 10,
  25. order: 'asc',
  26. orderBy: 'title',
  27. };
  28. const MyQueryControls = () => {
  29. const [ query, setQuery ] = useState( QUERY_DEFAULTS );
  30. const { category, categories, maxItems, minItems, numberOfItems, order, orderBy } = query;
  31. const updateQuery = ( newQuery ) => {
  32. setQuery( { ...query, ...newQuery } );
  33. };
  34. return (
  35. <QueryControls
  36. { ...{ maxItems, minItems, numberOfItems, order, orderBy } }
  37. onOrderByChange={ ( newOrderBy ) => updateQuery( { orderBy: newOrderBy } ) }
  38. onOrderChange={ ( newOrder ) => updateQuery( { order: newOrder } ) }
  39. categoriesList={ categories }
  40. selectedCategoryId={ category }
  41. onCategoryChange={ ( newCategory ) => updateQuery( { category: newCategory } ) }
  42. onNumberOfItemsChange={ ( newNumberOfItems ) =>
  43. updateQuery( { numberOfItems: newNumberOfItems } )
  44. }
  45. />
  46. );
  47. };

複数カテゴリセレクタ

QueryControls コンポーネントは、これまでの単一カテゴリ選択を置き換えるために、複数カテゴリ選択をサポートするようになりました。これを有効にするには、categoriesList の代わりに categorySuggestions を使用し、selectedCategoryId の代わりに selectedCategories 配列を使用してコンポーネントを使用します。

  1. const QUERY_DEFAULTS = {
  2. orderBy: 'title',
  3. order: 'asc',
  4. selectedCategories: [
  5. {
  6. id: 1,
  7. value: 'Category 1',
  8. parent: 0,
  9. },
  10. {
  11. id: 2,
  12. value: 'Category 1b',
  13. parent: 1,
  14. },
  15. ],
  16. categories: {
  17. 'Category 1': {
  18. id: 1,
  19. name: 'Category 1',
  20. parent: 0,
  21. },
  22. 'Category 1b': {
  23. id: 2,
  24. name: 'Category 1b',
  25. parent: 1,
  26. },
  27. 'Category 2': {
  28. id: 3,
  29. name: 'Category 2',
  30. parent: 0,
  31. },
  32. },
  33. numberOfItems: 10,
  34. };
  35. const MyQueryControls = () => {
  36. const [ query, setQuery ] = useState( QUERY_DEFAULTS );
  37. const { orderBy, order, selectedCategories, categories, numberOfItems } = query;
  38. const updateQuery = ( newQuery ) => {
  39. setQuery( { ...query, ...newQuery } );
  40. };
  41. return (
  42. <QueryControls
  43. { ...{ orderBy, order, numberOfItems } }
  44. onOrderByChange={ ( newOrderBy ) => updateQuery( { orderBy: newOrderBy } ) }
  45. onOrderChange={ ( newOrder ) => updateQuery( { order: newOrder } ) }
  46. categorySuggestions={ categories }
  47. selectedCategories={ selectedCategories }
  48. onCategoryChange={ ( category ) => updateQuery( { selectedCategories: category } ) }
  49. onNumberOfItemsChange={ ( newNumberOfItems ) =>
  50. updateQuery( { numberOfItems: newNumberOfItems } )
  51. }
  52. />
  53. );
  54. };

カテゴリリストの形式も、カテゴリ提案の期待される型に一致するように更新する必要があります。

プロパティ

authorList: Author[]

選択可能な著者の配列です。

  • 必須: いいえ
  • プラットフォーム: Web

categoriesList: Category[]

カテゴリの配列です。onCategoryChange プロパティと一緒に渡されると、コンポーネントは一度に1つのカテゴリを選択できるUIをレンダリングします。

  • 必須: いいえ
  • プラットフォーム: Web

categorySuggestions: Record< Category[ ‘name’ ], Category >

カテゴリ名をキーとするカテゴリのオブジェクトです。onCategoryChange プロパティと一緒に渡されると、コンポーネントは複数選択を可能にするUIをレンダリングします。

  • 必須: いいえ
  • プラットフォーム: Web

maxItems: number

アイテムの最大数です。

  • 必須: いいえ
  • デフォルト: 100
  • プラットフォーム: Web

minItems: number

アイテムの最小数です。

  • 必須: いいえ
  • デフォルト: 1
  • プラットフォーム: Web

numberOfItems: number

クエリを介して取得する選択されたアイテムの数です。

  • 必須: いいえ
  • プラットフォーム: Web

onAuthorChange: ( newAuthor: string ) => void

新しい著者の値を受け取る関数です。指定されていない場合、著者コントロールはレンダリングされません。

  • 必須: いいえ
  • プラットフォーム: Web

onCategoryChange: ( newCategory: string ) => void | FormTokenFieldProps[ ‘onChange’ ]

新しいカテゴリの値を受け取る関数です。指定されていない場合、カテゴリコントロールはレンダリングされません。

関数のシグネチャは、複数カテゴリ選択が有効かどうかによって変わります。

  • 必須: いいえ
  • プラットフォーム: Web

onNumberOfItemsChange: ( newNumber?: number ) => void

新しいアイテム数を受け取る関数です。指定されていない場合、アイテム数範囲コントロールはレンダリングされません。

  • 必須: いいえ
  • プラットフォーム: Web

onOrderChange: ( newOrder: ‘asc’ | ‘desc’ ) => void

新しい順序の値を受け取る関数です。このプロパティまたは onOrderByChange プロパティが指定されていない場合、順序コントロールはレンダリングされません。

  • 必須: いいえ
  • プラットフォーム: Web

onOrderByChange: ( newOrderBy: ‘date’ | ‘title’ ) => void

新しいorderbyの値を受け取る関数です。このプロパティまたは onOrderChange プロパティが指定されていない場合、順序コントロールはレンダリングされません。

  • 必須: いいえ
  • プラットフォーム: Web

order: ‘asc’ | ‘desc’

投稿を取得する順序です。

  • 必須: いいえ
  • プラットフォーム: Web

orderBy: ‘date’ | ‘title’

投稿を並べ替えるためのメタキーです。

  • 必須: いいえ
  • プラットフォーム: Web

selectedAuthorId: number

選択された著者のIDです。

  • 必須: いいえ
  • プラットフォーム: Web

selectedCategories: Category[]

categorySuggestions プロパティのために選択されたカテゴリです。

  • 必須: いいえ
  • プラットフォーム: Web

selectedCategoryId: number

categoriesList プロパティのために選択されたカテゴリです。

  • 必須: いいえ
  • プラットフォーム: Web

__next40pxDefaultSize: boolean

将来のバージョンでデフォルトサイズになる大きなデフォルト高さを選択し始めます。

  • 必須: いいえ
  • デフォルト: false