'ids', 'post_type' => $acfCardData->postTypes, 'post_status' => $acfCardData->postStatuses, 'posts_per_page' => $acfCardData->limit, 'order' => $acfCardData->order, 'orderby' => $acfCardData->orderBy, 'ignore_sticky_posts' => $acfCardData->isIgnoreStickyPosts, ]; if ($acfCardData->postIn) { $args['post__in'] = $acfCardData->postIn; } if ($acfCardData->postNotIn) { $args['post__not_in'] = $acfCardData->postNotIn; } if (in_array($acfCardData->orderBy, ['meta_value', 'meta_value_num',], true)) { $fieldMeta = new FieldMeta($acfCardData->getOrderByMetaAcfFieldId()); if ($fieldMeta->isFieldExist()) { $args['meta_key'] = $fieldMeta->getName(); } } return $args; } public function getPostsData(AcfCardData $acfCardData, int $pageNumber = 1): array { // stub for tests if (! class_exists('WP_Query')) { return [ 'pagesAmount' => 0, 'postIds' => [], ]; } $queryArgs = $this->getQueryArgs($acfCardData, $pageNumber); $query = new WP_Query($queryArgs); $postsPerPage = $queryArgs['posts_per_page'] ?? 0; return [ 'pagesAmount' => (int)ceil($query->found_posts / $postsPerPage), // only ids, as the 'fields' argument is set 'postIds' => $query->get_posts(), ]; } }