Skip to content

API Reference

All WordPress API calls go through OrangeCollar\WordPressIntegration\Model\Api\ClientInterface. Never call Guzzle directly from outside the client implementation.

interface ClientInterface
{
// Posts
public function getPosts(array $params = []): array;
public function getPost(int $id): array;
public function getPostBySlug(string $slug): ?array;
// Categories
public function getCategories(array $params = []): array;
public function getAllCategories(): array;
public function getCategory(int $id): array;
public function getCategoryBySlug(string $slug): ?array;
// Tags
public function getTags(array $params = []): array;
public function getAllTags(): array;
public function getTag(int $id): array;
public function getTagBySlug(string $slug): ?array;
// Media
public function getMedia(int $id): array;
// Menus (oc-bridge endpoints)
public function getMenu(string $locationOrSlug): array;
public function getMenus(): array;
// SEO (oc-bridge endpoint)
public function getSeoMeta(int $postId): array;
// Authors
public function getAuthor(int $id): array;
public function getAuthorBySlug(string $slug): ?array;
// Search and related
public function searchPosts(string $query, int $page = 1): array;
public function getRelatedPosts(int $postId, int $count = 5): array;
}

Methods returning array return the raw WP REST API response (already JSON-decoded). Methods returning ?array return null when no result is found (e.g., slug not matched).

OrangeCollar\WordPressIntegration\Model\Post

PropertyTypeSource
idintid
slugstringslug
titlestringtitle.rendered
contentstringcontent.rendered (after ContentProcessor)
excerptstringexcerpt.rendered
statusstringstatus
dateDateTimeImmutabledate
modifiedDateTimeImmutablemodified
authorIdintauthor
authorNamestring_embedded.author[0].name
authorSlugstring_embedded.author[0].slug
featuredMediaIdintfeatured_media
featuredImageUrlstring_embedded.wp:featuredmedia[0].source_url
categoriesarray_embedded.wp:term (category terms)
tagsarray_embedded.wp:term (tag terms)
commentCountintcomment_count
acfFieldsarrayacf (if ACF plugin active)

OrangeCollar\WordPressIntegration\Model\Category

PropertyTypeDescription
idintWP category ID
namestringCategory display name
slugstringURL slug
descriptionstringCategory description
countintPost count
parentIdintParent category ID (0 if top-level)

OrangeCollar\WordPressIntegration\Model\Tag

PropertyTypeDescription
idintWP tag ID
namestringTag display name
slugstringURL slug
countintPost count

OrangeCollar\WordPressIntegration\Model\Menu

PropertyTypeDescription
idintWP menu ID
namestringMenu name
slugstringMenu slug
itemsarrayNested array of menu items
interface PostRepositoryInterface
{
public function getList(int $page = 1, int $perPage = 10): array;
public function getBySlug(string $slug): ?Post;
public function getById(int $id): ?Post;
public function getByCategory(string $slug, int $page = 1): array;
public function getByTag(string $slug, int $page = 1): array;
public function getByAuthor(string $slug, int $page = 1): array;
public function search(string $query, int $page = 1): array;
}

Repository methods return Post objects (or arrays of Post objects). They handle caching internally - you should never need to cache repository results manually.