Skip to main content

Class: PostsArchiveFetchStrategy<T, P>

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:206

The PostsArchiveFetchStrategy is used to fetch a collection of posts from any post type. Note that custom post types and custom taxonomies should be defined in headless.config.js

This strategy supports extracting endpoint params from url E.g:

  • /category/cat-name/page/2 maps to { category: 'cat-name', page: 2 }
  • /page/2/ maps to { page: 2 }
  • /genre/genre-name/page/2 maps to { genre: 'genre-name', page: 2 } if a genre taxonomy is defined in headless.config.js

See​

getParamsFromURL to learn about url param mapping

Extends​

Extended by​

Type Parameters​

T​

T extends PostEntity = PostEntity

P​

P extends PostsArchiveParams = PostsArchiveParams

Constructors​

Constructor​

new PostsArchiveFetchStrategy<T, P>(baseURL?, defaultParams?): PostsArchiveFetchStrategy<T, P>

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:169

The strategy constructor

Parameters​

baseURL?​

string

The base URL of the API

defaultParams?​

Partial<P>

(optional) list of default params

Returns​

PostsArchiveFetchStrategy<T, P>

Inherited from​

AbstractFetchStrategy.constructor

Properties​

baseURL​

baseURL: string = ''

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:155

The base URL where the API is located

Inherited from​

AbstractFetchStrategy.baseURL


defaultParams​

defaultParams: Partial<Params> = {}

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:145

The Default Params

Inherited from​

AbstractFetchStrategy.defaultParams


endpoint​

endpoint: string = ''

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:150

Holds the current endpoint for the strategy

Inherited from​

AbstractFetchStrategy.endpoint


locale​

locale: string = ''

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:212


optimizeYoastPayload​

optimizeYoastPayload: boolean = false

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:214


path​

path: string = ''

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:210

Methods​

buildEndpointURL()​

buildEndpointURL(params): string

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:293

Handles taxonomy filters and switch endpoint based on post type

Parameters​

params​

Partial<P>

The params to build the endpoint with

Returns​

string

Overrides​

AbstractFetchStrategy.buildEndpointURL


fetcher()​

fetcher(url, params, options): Promise<FetchResponse<T[]>>

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:397

Before fetching posts, we need handle taxonomy and authors.

If the headless plugin is not being used, then additional requests needs to be made to get authors and terms ids

Parameters​

url​

string

The URL to parse

params​

Partial<P>

The params to build the endpoint with

options​

Partial<FetchOptions> = {}

FetchOptions

Returns​

Promise<FetchResponse<T[]>>

Overrides​

AbstractFetchStrategy.fetcher


filterData()​

filterData(data, options?): FetchResponse<T[]>

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:549

Filters the data returned from the API by excluding fields that are not needed in order to reduce payload size.

Parameters​

data​

FetchResponse<T[]>

The data to filter

options?​

FilterDataOptions<T[]>

Filter options

Returns​

FetchResponse<T[]>

The filtered data

Overrides​

AbstractFetchStrategy.filterData


get()​

get(params): Promise<FetchResponse<T[]>>

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:477

This is a simple wrapper to quickly fetch data from the API given a set of params

Usage​

import { PostsArchiveFetchStrategy } from '@headstartwp/core';

new PostsArchiveFetchStrategy('http://my-wp-url.com').get({perPage: 10});

Parameters​

params​

Partial<Params> = {}

The endpoint params

Returns​

Promise<FetchResponse<T[]>>

Inherited from​

AbstractFetchStrategy.get


getAuthHeader()​

getAuthHeader(options): string

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:282

Parameters​

options​

Partial<FetchOptions> = {}

Returns​

string

Inherited from​

AbstractFetchStrategy.getAuthHeader


getCacheKey()​

getCacheKey(params): object

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:442

Returns the cache key with both the endpoint and the sourceUrl to distinguish between multiple sites

Parameters​

params​

Partial<Params>

The request params

Returns​

object

The cache key object

args​

args: Partial<P> & object

Type declaration​
sourceUrl​

sourceUrl: string

url​

url: string

Inherited from​

AbstractFetchStrategy.getCacheKey


getDefaultEndpoint()​

getDefaultEndpoint(): string

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:216

A method that must be implemented by concrete implementations which returns the default endpoint for the strategy

Returns​

string

Overrides​

AbstractFetchStrategy.getDefaultEndpoint


getDefaultParams()​

getDefaultParams(): Partial<P>

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:220

Returns​

Partial<P>

Overrides​

AbstractFetchStrategy.getDefaultParams


getEndpoint()​

getEndpoint(): string

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:200

Returns the endpoint of the strategy. If no endpoint has been set at runtime, returns the default endpoint

Returns​

string

The current endpoint for the strategy

Inherited from​

AbstractFetchStrategy.getEndpoint


getParamsFromURL()​

getParamsFromURL(path, params): Partial<P>

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:232

This strategy automatically extracts taxonomy filters, date filters and pagination params from the URL

It also takes into account the custom taxonomies specified in headless.config.js

Parameters​

path​

string

The URL path to extract params from

params​

Partial<P> = {}

Returns​

Partial<P>

Overrides​

AbstractFetchStrategy.getParamsFromURL


getPreviewAuthHeader()​

getPreviewAuthHeader(options): string

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:273

Parameters​

options​

Partial<FetchOptions> = {}

Returns​

string

Inherited from​

AbstractFetchStrategy.getPreviewAuthHeader


getPreviewHeaderName()​

getPreviewHeaderName(options): "X-HeadstartWP-Authorization" | "Authorization"

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:267

Parameters​

options​

Partial<FetchOptions> = {}

Returns​

"X-HeadstartWP-Authorization" | "Authorization"

Inherited from​

AbstractFetchStrategy.getPreviewHeaderName


getQueriedObject()​

getQueriedObject(response, params): QueriedObject

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:480

Returns the queried object if applicable (e.g if querying by category, tag, author or custom taxonomy term)

Parameters​

response​

FetchResponse<T[]>

The response from the API

params​

Partial<P>

The request params

Returns​

QueriedObject

Overrides​

AbstractFetchStrategy.getQueriedObject


isMainQuery()​

isMainQuery(path, nonUrlParams): boolean

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:231

Checks if this is the main query for a page

Parameters​

path​

string

The page name

nonUrlParams​

Partial<Params>

The non-url params

Returns​

boolean

Inherited from​

AbstractFetchStrategy.isMainQuery


normalizeForCache()​

normalizeForCache(data, params): NormalizedDataForCache<T[], P>

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:452

Normalize data for cache.

Parameters​

data​

FetchResponse<T[]>

The fetch response data

params​

Partial<Params>

The request params

Returns​

NormalizedDataForCache<T[], P>

Inherited from​

AbstractFetchStrategy.normalizeForCache


prepareResponse()​

prepareResponse(response, params): FetchResponse<T[]>

Defined in: packages/core/src/data/strategies/PostsArchiveFetchStrategy.ts:331

Parameters​

response​

FetchResponse<T[]>

params​

Partial<P>

Returns​

FetchResponse<T[]>

Overrides​

AbstractFetchStrategy.prepareResponse


setBaseURL()​

setBaseURL(url): void

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:190

Parameters​

url​

undefined | string

Returns​

void

Inherited from​

AbstractFetchStrategy.setBaseURL


setEndpoint()​

setEndpoint(endpoint): void

Defined in: packages/core/src/data/strategies/AbstractFetchStrategy.ts:186

The strategy can switch endpoints at runtime if needed.

E.g: The actual endpoint for a post depends on its post_type

Parameters​

endpoint​

string

The endpoint to fetch

Returns​

void

Inherited from​

AbstractFetchStrategy.setEndpoint