PluginProbe ʕ •ᴥ•ʔ
Advanced Custom Fields (ACF®) / 6.8.5
Advanced Custom Fields (ACF®) v6.8.5
6.8.9 6.8.8 6.8.7 6.8.6 6.8.5 6.8.4 6.8.3 6.8.2 6.8.1 5.8.5 5.8.6 5.8.7 5.8.8 5.8.9 5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.0.6 6.0.7 6.1.0 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6 6.1.7 6.1.8 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.6.1 6.2.7 6.2.8 6.2.9 6.3.0 6.3.1 6.3.10.2 6.3.11 6.3.12 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.6.1 6.4.0 6.4.0.1 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.6.0 6.6.1 6.6.2 6.7.0 6.7.1 6.7.2 6.8.0 trunk 1.0.0 1.0.2 1.0.3 1.0.5 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.1.1 2.1.3 2.1.4 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.6 3.0.7 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7 3.5.8 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.8 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.8 4.3.9 4.4.0 4.4.1 4.4.10 4.4.11 4.4.12 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 5.10 5.10.1 5.10.2 5.11 5.11.1 5.11.2 5.11.3 5.11.4 5.12 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.6.10 5.6.2 5.6.3 5.6.4 5.6.5 5.6.6 5.6.7 5.6.8 5.6.9 5.7.0 5.7.1 5.7.10 5.7.12 5.7.13 5.7.2 5.7.3 5.7.4 5.7.5 5.7.6 5.7.7 5.7.8 5.7.9 5.8.0 5.8.1 5.8.10 5.8.11 5.8.12 5.8.13 5.8.14 5.8.2 5.8.3 5.8.4
advanced-custom-fields / src / AI / GEO / SchemaData.php
advanced-custom-fields / src / AI / GEO Last commit date
Outputs 5 months ago data 5 months ago FieldSettings.php 5 months ago GEO.php 5 months ago Schema.php 5 months ago SchemaData.php 5 months ago
SchemaData.php
127 lines
1 <?php
2 /**
3 * @package ACF
4 * @author WP Engine
5 *
6 * © 2026 Advanced Custom Fields (ACF®). All rights reserved.
7 * "ACF" is a trademark of WP Engine.
8 * Licensed under the GNU General Public License v2 or later.
9 * https://www.gnu.org/licenses/gpl-2.0.html
10 */
11
12 /**
13 * Schema.org type and property data with lazy loading
14 *
15 * Data files in the /data directory are auto-generated by tools/generate-schema.js
16 * To regenerate data files, run: npm run generate-schema
17 *
18 * @package ACF\AI\GEO
19 */
20
21 namespace ACF\AI\GEO;
22
23 /**
24 * Class SchemaData
25 *
26 * Contains static schema.org vocabulary data for type and property validation.
27 * Data is lazy-loaded from separate files to reduce memory usage when not needed.
28 */
29 class SchemaData {
30
31 /**
32 * Type hierarchy mapping (lazy-loaded)
33 *
34 * @var array|null
35 */
36 private static $type_hierarchy = null;
37
38 /**
39 * Property domain mappings (lazy-loaded)
40 *
41 * @var array|null
42 */
43 private static $property_domains = null;
44
45 /**
46 * Property range mappings (lazy-loaded)
47 *
48 * @var array|null
49 */
50 private static $property_ranges = null;
51
52 /**
53 * Compatible properties by output type (lazy-loaded)
54 *
55 * @var array|null
56 */
57 private static $compatible_properties = null;
58
59 /**
60 * Get the type hierarchy mapping
61 *
62 * Maps each type to its parent type in the schema.org hierarchy.
63 * For example: 'Recipe' => 'HowTo'
64 *
65 * @since 6.8.0
66 *
67 * @return array
68 */
69 public static function get_type_hierarchy(): array {
70 if ( self::$type_hierarchy === null ) {
71 self::$type_hierarchy = require __DIR__ . '/data/type-hierarchy.php';
72 }
73 return self::$type_hierarchy;
74 }
75
76 /**
77 * Get the property domain mappings
78 *
79 * Maps each property to the types it can be used with.
80 * For example: 'prepTime' => ['HowTo', 'HowToDirection']
81 *
82 * @since 6.8.0
83 *
84 * @return array
85 */
86 public static function get_property_domains(): array {
87 if ( self::$property_domains === null ) {
88 self::$property_domains = require __DIR__ . '/data/property-domains.php';
89 }
90 return self::$property_domains;
91 }
92
93 /**
94 * Get the property range mappings
95 *
96 * Maps each property to the types it expects as values.
97 * For example: 'author' => ['Person', 'Organization']
98 *
99 * @since 6.8.0
100 *
101 * @return array
102 */
103 public static function get_property_ranges(): array {
104 if ( self::$property_ranges === null ) {
105 self::$property_ranges = require __DIR__ . '/data/property-ranges.php';
106 }
107 return self::$property_ranges;
108 }
109
110 /**
111 * Get compatible properties by output type
112 *
113 * Pre-computed mapping of output types to compatible properties.
114 * For example: 'Text' => ['name', 'description', ...]
115 *
116 * @since 6.8.0
117 *
118 * @return array
119 */
120 public static function get_compatible_properties(): array {
121 if ( self::$compatible_properties === null ) {
122 self::$compatible_properties = require __DIR__ . '/data/compatible-properties.php';
123 }
124 return self::$compatible_properties;
125 }
126 }
127