queryBuilder = $queryBuilder; $this->renderedCards = []; } protected function renderPosts(int $acfViewId, array $postIds): string { $markup = ''; foreach ($postIds as $postId) { $shortcode = sprintf( "[%s view-id='%s' object-id='%s']", Plugin::SHORTCODE, $acfViewId, $postId ); $markup .= do_shortcode($shortcode); } return $markup; } /** * @param AcfCardData $acfCardData * @param int $pagesAmount * * @return string */ protected function renderExtraMarkup($acfCardData, int $pagesAmount): string { return ''; } /** * @param AcfCardData $acfCardData * @param int $pageId * @param int $pageNumber * @param bool $isLoadMore * * @return string */ public function getMarkup($acfCardData, int $pageId, int $pageNumber = 1, bool $isLoadMore = false): string { $markup = ''; $postsData = $this->queryBuilder->getPostsData($acfCardData, $pageNumber); $markup .= ! $isLoadMore ? sprintf('
', $acfCardData->getSource()) : ''; $markup .= ! $isLoadMore ? '
' : ''; $markup .= $this->renderPosts($acfCardData->acfViewId, $postsData['postIds']); $markup .= ! $isLoadMore ? '
' : ''; $markup .= ! $isLoadMore ? $this->renderExtraMarkup($acfCardData, $postsData['pagesAmount']) : ''; $markup .= ! $isLoadMore ? '
' : ''; if (! key_exists($acfCardData->getSource(), $this->renderedCards)) { $this->renderedCards[$acfCardData->getSource()] = $acfCardData; } return $markup; } public function getRenderedCards(): array { return $this->renderedCards; } }