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 / Acf / FieldGroup / Location / Post.php
codepress-admin-columns / classes / Acf / FieldGroup / Location Last commit date
Comment.php 2 days ago Media.php 2 days ago Post.php 2 days ago Taxonomy.php 2 days ago User.php 2 days ago
Post.php
86 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Acf\FieldGroup\Location;
6
7 use AC\Acf\FieldGroup;
8 use ACF_Location;
9
10 class Post implements FieldGroup\Query
11 {
12 private string $post_type;
13
14 public function __construct(string $post_type)
15 {
16 $this->post_type = $post_type;
17 }
18
19 /**
20 * Enable all ACF location rules for the specified post type. Then call acf_get_field_groups() to get all
21 * field groups that match the location rules.
22 * @see acf_match_location_rule()
23 */
24 public function get_groups(): array
25 {
26 $rule_params = $this->get_rules_parameter();
27
28 foreach ($rule_params as $rule_param) {
29 add_filter('acf/location/rule_match/' . $rule_param, '__return_true', 16);
30 }
31
32 $groups = acf_get_field_groups(['post_type' => $this->post_type]);
33
34 foreach ($rule_params as $rule_param) {
35 remove_filter('acf/location/rule_match/' . $rule_param, '__return_true', 16);
36 }
37
38 return $groups;
39 }
40
41 /**
42 * Retrieves all possible ACF location rules associated with the specified post type.
43 */
44 private function get_rules_parameter(): array
45 {
46 $black_list = ['post_type'];
47
48 $params = [
49 'user_type',
50 ];
51
52 if (! function_exists('acf_get_store')) {
53 return $params;
54 }
55
56 $store = acf_get_store('location-types');
57
58 if (! $store) {
59 return $params;
60 }
61
62 foreach ($store->get_data() as $location_rule) {
63 if (! $location_rule instanceof ACF_Location) {
64 continue;
65 }
66
67 if (in_array($location_rule->name, $black_list, true)) {
68 continue;
69 }
70
71 if ('post' !== $location_rule->object_type) {
72 continue;
73 }
74
75 if ($location_rule->object_subtype && $this->post_type !== $location_rule->object_subtype) {
76 continue;
77 }
78
79 $params[] = $location_rule->name;
80 }
81
82 return array_values(array_unique($params));
83 }
84
85 }
86