diff --git a/packages/cms/core/src/cms-client.ts b/packages/cms/core/src/cms-client.ts index aa8d886d8..caed5862a 100644 --- a/packages/cms/core/src/cms-client.ts +++ b/packages/cms/core/src/cms-client.ts @@ -37,7 +37,7 @@ export namespace Cms { parentIds?: string[]; language?: string | undefined; sortDirection?: 'asc' | 'desc'; - sortBy?: 'publishedAt' | 'order'; + sortBy?: 'publishedAt' | 'order' | 'title' | 'slug'; } export interface GetCategoriesOptions { diff --git a/packages/cms/wordpress/src/wp-client.ts b/packages/cms/wordpress/src/wp-client.ts index bf6d81755..1736f0a09 100644 --- a/packages/cms/wordpress/src/wp-client.ts +++ b/packages/cms/wordpress/src/wp-client.ts @@ -41,7 +41,11 @@ class WordpressClient implements CmsClient { } if (options.sortBy) { - queryParams.append('orderby', options.sortBy); + const sortBy = mapSortByParam(options.sortBy); + + if (sortBy) { + queryParams.append('orderby', sortBy); + } } if (options.sortDirection) { @@ -351,3 +355,18 @@ class WordpressClient implements CmsClient { : ''; } } + +function mapSortByParam(sortBy: string) { + switch (sortBy) { + case 'publishedAt': + return 'date'; + case 'title': + return 'title'; + case 'slug': + return 'slug'; + case 'order': + return 'menu_order'; + default: + return; + } +}