PluginProbe
Advanced Custom Fields (ACF®) / 6.0.0
Advanced Custom Fields (ACF®) v6.0.0
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 All 230 releases
advanced-custom-fields / includes / acf-utility-functions.php
acf-utility-functions.php
159 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // Globals.
4 global $acf_stores, $acf_instances;
5
6 // Initialize plaeholders.
7 $acf_stores = array();
8 $acf_instances = array();
9
10 /**
11 * acf_new_instance
12 *
13 * Creates a new instance of the given class and stores it in the instances data store.
14 *
15 * @date 9/1/19
16 * @since 5.7.10
17 *
18 * @param string $class The class name.
19 * @return object The instance.
20 */
21 function acf_new_instance( $class = '' ) {
22 global $acf_instances;
23 return $acf_instances[ $class ] = new $class();
24 }
25
26 /**
27 * acf_get_instance
28 *
29 * Returns an instance for the given class.
30 *
31 * @date 9/1/19
32 * @since 5.7.10
33 *
34 * @param string $class The class name.
35 * @return object The instance.
36 */
37 function acf_get_instance( $class = '' ) {
38 global $acf_instances;
39 if ( ! isset( $acf_instances[ $class ] ) ) {
40 $acf_instances[ $class ] = new $class();
41 }
42 return $acf_instances[ $class ];
43 }
44
45 /**
46 * acf_register_store
47 *
48 * Registers a data store.
49 *
50 * @date 9/1/19
51 * @since 5.7.10
52 *
53 * @param string $name The store name.
54 * @param array $data Array of data to start the store with.
55 * @return ACF_Data
56 */
57 function acf_register_store( $name = '', $data = false ) {
58
59 // Create store.
60 $store = new ACF_Data( $data );
61
62 // Register store.
63 global $acf_stores;
64 $acf_stores[ $name ] = $store;
65
66 // Return store.
67 return $store;
68 }
69
70 /**
71 * acf_get_store
72 *
73 * Returns a data store.
74 *
75 * @date 9/1/19
76 * @since 5.7.10
77 *
78 * @param string $name The store name.
79 * @return ACF_Data
80 */
81 function acf_get_store( $name = '' ) {
82 global $acf_stores;
83 return isset( $acf_stores[ $name ] ) ? $acf_stores[ $name ] : false;
84 }
85
86 /**
87 * acf_switch_stores
88 *
89 * Triggered when switching between sites on a multisite installation.
90 *
91 * @date 13/2/19
92 * @since 5.7.11
93 *
94 * @param int $site_id New blog ID.
95 * @param int prev_blog_id Prev blog ID.
96 * @return void
97 */
98 function acf_switch_stores( $site_id, $prev_site_id ) {
99
100 // Loop over stores and call switch_site().
101 global $acf_stores;
102 foreach ( $acf_stores as $store ) {
103 $store->switch_site( $site_id, $prev_site_id );
104 }
105 }
106 add_action( 'switch_blog', 'acf_switch_stores', 10, 2 );
107
108 /**
109 * acf_get_path
110 *
111 * Returns the plugin path to a specified file.
112 *
113 * @date 28/9/13
114 * @since 5.0.0
115 *
116 * @param string $filename The specified file.
117 * @return string
118 */
119 function acf_get_path( $filename = '' ) {
120 return ACF_PATH . ltrim( $filename, '/' );
121 }
122
123 /**
124 * acf_get_url
125 *
126 * Returns the plugin url to a specified file.
127 * This function also defines the ACF_URL constant.
128 *
129 * @date 12/12/17
130 * @since 5.6.8
131 *
132 * @param string $filename The specified file.
133 * @return string
134 */
135 function acf_get_url( $filename = '' ) {
136 if ( ! defined( 'ACF_URL' ) ) {
137 define( 'ACF_URL', acf_get_setting( 'url' ) );
138 }
139 return ACF_URL . ltrim( $filename, '/' );
140 }
141
142 /*
143 * acf_include
144 *
145 * Includes a file within the ACF plugin.
146 *
147 * @date 10/3/14
148 * @since 5.0.0
149 *
150 * @param string $filename The specified file.
151 * @return void
152 */
153 function acf_include( $filename = '' ) {
154 $file_path = acf_get_path( $filename );
155 if ( file_exists( $file_path ) ) {
156 include_once $file_path;
157 }
158 }
159