PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.3
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.3
6.0.3 6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 5.6.1 All 34 releases
← All changes | integrations/wordpress/includes/functions.php +251 -0 5.7.5 → 6.0.3 View file →
@@ -1,0 +1,251 @@
1 +<?php
2 +/**
3 + * Functions
4 + *
5 + * @package AutomatorWP\WordPress\Functions
6 + * @since 1.0.0
7 + */
8 +// Exit if accessed directly
9 +if( !defined( 'ABSPATH' ) ) exit;
10 +
11 +/**
12 +* Get taxonomies
13 +*
14 +* @since 1.0.0
15 +*
16 +* @return array
17 +*/
18 +function automatorwp_wordpress_get_public_taxonomies() {
19 +
20 + $taxonomies = array();
21 +
22 + $all_taxonomies = get_taxonomies( array( 'public' => true ), 'objects' );
23 +
24 + foreach ( $all_taxonomies as $taxonomy ) {
25 +
26 + $taxonomies[] = array(
27 + 'id' => $taxonomy->name,
28 + 'name' => $taxonomy->labels->name,
29 + );
30 +
31 + }
32 +
33 + return $taxonomies;
34 +}
35 +
36 +/**
37 + * Get taxonomy
38 + *
39 + * @since 1.0.0
40 + *
41 + * @param stdClass $field
42 + *
43 + * @return array
44 + */
45 +function automatorwp_wordpress_options_cb_taxonomy( $field ) {
46 +
47 + // Setup vars
48 + $value = $field->escaped_value;
49 + $none_value = 'any';
50 + $none_label = __( 'any taxonomy', 'automatorwp' );
51 + $options = automatorwp_options_cb_none_option( $field, $none_value, $none_label );
52 +
53 + if( ! empty( $value ) ) {
54 + if( ! is_array( $value ) ) {
55 + $value = array( $value );
56 + }
57 +
58 + foreach( $value as $taxonomy_id ) {
59 +
60 + // Skip option none
61 + if( $taxonomy_id === $none_value ) {
62 + continue;
63 + }
64 +
65 + $options[$taxonomy_id] = automatorwp_wordpress_get_taxonomy_name( $taxonomy_id );
66 + }
67 + }
68 +
69 + return $options;
70 +
71 +}
72 +
73 +/**
74 +* Get the taxonomy name
75 +*
76 +* @since 1.0.0
77 +*
78 +* @param string $taxonomy_id
79 +*
80 +* @return array
81 +*/
82 +function automatorwp_wordpress_get_taxonomy_name( $taxonomy_id ) {
83 +
84 + // Empty title if no ID provided
85 + if( empty( $taxonomy_id ) ) {
86 + return '';
87 + }
88 +
89 + $taxonomy = get_taxonomy( $taxonomy_id );
90 + $taxonomy_name = $taxonomy->labels->name;
91 +
92 + return $taxonomy_name;
93 +
94 +}
95 +
96 +/**
97 + * Get terms
98 + *
99 + * @since 1.0.0
100 + *
101 + * @param stdClass $field
102 + *
103 + * @return array
104 + */
105 +function automatorwp_wordpress_options_cb_term( $field ) {
106 +
107 + // Setup vars
108 + $value = $field->escaped_value;
109 + $none_value = 'any';
110 + $none_label = __( 'any term', 'automatorwp' );
111 + $options = automatorwp_options_cb_none_option( $field, $none_value, $none_label );
112 +
113 + $taxonomy_id = ct_get_object_meta( $field->object_id, 'taxonomy', true );
114 +
115 + if( ! empty( $value ) ) {
116 + if( ! is_array( $value ) ) {
117 + $value = array( $value );
118 + }
119 +
120 + foreach( $value as $term_id ) {
121 +
122 + // Skip option none
123 + if( $term_id === $none_value ) {
124 + continue;
125 + }
126 +
127 + $options[$term_id] = automatorwp_wordpress_get_term_name( $taxonomy_id, $term_id );
128 + }
129 + }
130 +
131 + return $options;
132 +
133 +}
134 +
135 +/**
136 +* Get the terms
137 +*
138 +* @since 1.0.0
139 +*
140 +* @return array
141 +*/
142 +function automatorwp_wordpress_get_taxonomy_terms( $taxonomy_id ) {
143 +
144 + $terms = array();
145 + $query_args = array( 'hide_empty' => false );
146 +
147 + if( ! empty( $taxonomy_id ) ) {
148 + $query_args['taxonomy'] = $taxonomy_id;
149 + }
150 +
151 + $terms_taxonomy = get_terms( $query_args );
152 +
153 + // Add terms to array
154 + foreach ( $terms_taxonomy as $term ) {
155 + $terms[] = array(
156 + 'id' => $term->term_id,
157 + 'name' => $term->name,
158 + );
159 + }
160 +
161 + return $terms;
162 +}
163 +
164 +/**
165 +* Get the term name
166 +*
167 +* @since 1.0.0
168 +*
169 +* @param string $term_id
170 +*
171 +* @return array
172 +*/
173 +function automatorwp_wordpress_get_term_name( $taxonomy_id, $term_id ) {
174 +
175 + // Empty title if no ID provided
176 + if( absint( $term_id ) === 0 ) {
177 + return '';
178 + }
179 +
180 + $term = get_term( $term_id );
181 + $term_name = $term->name;
182 +
183 + return $term_name;
184 +
185 +}
186 +
187 +/**
188 + * Validates an option name to prevent modifications to protected/critical options
189 + *
190 + * @since 1.0.0
191 + *
192 + * @param string $option_name The option name to validate
193 + *
194 + * @return bool True if the option name is protected, false otherwise
195 + */
196 +function automatorwp_is_protected_option( $option_name ) {
197 +
198 + $protected_options = automatorwp_get_protected_options();
199 +
200 + return in_array( $option_name, $protected_options, true );
201 +
202 +}
203 +
204 +/**
205 + * Validates an option name to prevent modifications to protected/critical options
206 + *
207 + * @since 1.0.0
208 + *
209 + * @param string $option_name The option name to validate
210 + *
211 + * @return array List of protected options
212 + */
213 +function automatorwp_get_protected_options() {
214 +
215 + // List of protected core options that should not be modified
216 + $protected_options = array(
217 + 'siteurl',
218 + 'home',
219 + 'admin_email',
220 + 'users_can_register',
221 + 'default_role',
222 + 'db_version',
223 + 'initial_db_version',
224 + 'wp_user_roles',
225 + 'auth_key',
226 + 'secure_auth_key',
227 + 'logged_in_key',
228 + 'nonce_key',
229 + 'auth_salt',
230 + 'secure_auth_salt',
231 + 'logged_in_salt',
232 + 'nonce_salt',
233 + 'active_plugins',
234 + 'template',
235 + 'stylesheet',
236 + 'current_theme',
237 + 'upload_path',
238 + );
239 +
240 + /**
241 + * Filter to modify the list of protected options
242 + *
243 + * @since 1.0.0
244 + *
245 + * @param array $protected_options List of protected option names
246 + */
247 + $protected_options = apply_filters( 'automatorwp_protected_options', $protected_options );
248 +
249 + return $protected_options;
250 +
251 +}