Orange Collar Media
Orange Collar Media
DOCS
ORANGECOLLAR/MODULE-WORDPRESS-INTEGRATION · API REFERENCE

PHP API reference for ClientInterface, data models, and PostRepositoryInterface

  • Magento
  • Adobe Commerce
  • Hyvä

ClientInterface

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

PHP
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).

Post Data Model

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)

Category Data Model

OrangeCollar\WordPressIntegration\Model\Category

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

Tag Data Model

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

PostRepositoryInterface

PHP
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.