PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.1.4
Admin Columns v7.1.4
7.1.4 7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Formatter / Post / PostReferences.php
codepress-admin-columns / classes / Formatter / Post Last commit date
Attachments.php 2 days ago Author.php 2 days ago BeforeMoreContent.php 2 days ago CommentCount.php 2 days ago CommentsForPostLink.php 2 days ago ContentExcerpt.php 2 days ago DatePublishFormatted.php 2 days ago Depth.php 2 days ago DescriptivePostStatus.php 2 days ago DiscussionStatus.php 2 days ago Excerpt.php 2 days ago ExcerptMissingMessage.php 2 days ago ExcerptRaw.php 2 days ago FeaturedImage.php 2 days ago HasCommentStatus.php 2 days ago IsPasswordProtected.php 2 days ago IsSticky.php 2 days ago LastModifiedAuthor.php 2 days ago Meta.php 2 days ago ModifiedDate.php 2 days ago Order.php 2 days ago PageTemplate.php 2 days ago Path.php 2 days ago Permalink.php 2 days ago PingStatus.php 2 days ago PostContent.php 2 days ago PostDate.php 2 days ago PostDateTimestamp.php 2 days ago PostFormat.php 2 days ago PostFormatIcon.php 2 days ago PostFormatLabel.php 2 days ago PostLink.php 2 days ago PostParentId.php 2 days ago PostReferences.php 2 days ago PostStatus.php 2 days ago PostStatusIcon.php 2 days ago PostTerms.php 2 days ago PostTermsOriginal.php 2 days ago PostTitle.php 2 days ago Property.php 2 days ago ShortLink.php 2 days ago Shortcodes.php 2 days ago Slug.php 2 days ago
PostReferences.php
52 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Formatter\Post;
6
7 use AC\Exception\ValueNotFoundException;
8 use AC\Formatter;
9 use AC\Type\PostTypeSlug;
10 use AC\Type\Value;
11 use AC\Type\ValueCollection;
12
13 final class PostReferences implements Formatter
14 {
15 private string $meta_key;
16
17 private ?PostTypeSlug $post_type;
18
19 public function __construct(string $meta_key, ?PostTypeSlug $post_type = null)
20 {
21 $this->meta_key = $meta_key;
22 $this->post_type = $post_type;
23 }
24
25 public function format(Value $value): ValueCollection
26 {
27 $referenced_ids = $this->get_referenced_post_ids((int)$value->get_id());
28
29 if (empty($referenced_ids)) {
30 throw ValueNotFoundException::from_id($value->get_id());
31 }
32
33 return ValueCollection::from_ids($value->get_id(), $referenced_ids);
34 }
35
36 private function get_referenced_post_ids(int $current_id): array
37 {
38 return get_posts([
39 'post_type' => $this->post_type ? (string)$this->post_type : 'any',
40 'fields' => 'ids',
41 'posts_per_page' => -1,
42 'meta_query' => [
43 [
44 'key' => $this->meta_key,
45 'value' => $current_id,
46 ],
47 ],
48 ]);
49 }
50
51 }
52