PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 7.2.1
Jetpack – WP Security, Backup, Speed, & Growth v7.2.1
15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / json-endpoints / class.wpcom-json-api-update-term-endpoint.php
jetpack / json-endpoints Last commit date
jetpack 7 years ago class.wpcom-json-api-add-widget-endpoint.php 8 years ago class.wpcom-json-api-autosave-post-v1-1-endpoint.php 8 years ago class.wpcom-json-api-bulk-delete-post-endpoint.php 8 years ago class.wpcom-json-api-bulk-restore-post-endpoint.php 8 years ago class.wpcom-json-api-bulk-update-comments-endpoint.php 7 years ago class.wpcom-json-api-comment-endpoint.php 7 years ago class.wpcom-json-api-delete-media-endpoint.php 8 years ago class.wpcom-json-api-delete-media-v1-1-endpoint.php 8 years ago class.wpcom-json-api-edit-media-v1-2-endpoint.php 7 years ago class.wpcom-json-api-get-autosave-v1-1-endpoint.php 8 years ago class.wpcom-json-api-get-comment-counts-endpoint.php 7 years ago class.wpcom-json-api-get-comment-endpoint.php 8 years ago class.wpcom-json-api-get-comment-history-endpoint.php 8 years ago class.wpcom-json-api-get-comments-tree-endpoint.php 8 years ago class.wpcom-json-api-get-comments-tree-v1-1-endpoint.php 8 years ago class.wpcom-json-api-get-comments-tree-v1-2-endpoint.php 8 years ago class.wpcom-json-api-get-customcss.php 8 years ago class.wpcom-json-api-get-media-endpoint.php 8 years ago class.wpcom-json-api-get-media-v1-1-endpoint.php 8 years ago class.wpcom-json-api-get-media-v1-2-endpoint.php 8 years ago class.wpcom-json-api-get-post-counts-v1-1-endpoint.php 8 years ago class.wpcom-json-api-get-post-endpoint.php 8 years ago class.wpcom-json-api-get-post-v1-1-endpoint.php 8 years ago class.wpcom-json-api-get-site-endpoint.php 7 years ago class.wpcom-json-api-get-site-v1-2-endpoint.php 8 years ago class.wpcom-json-api-get-taxonomies-endpoint.php 8 years ago class.wpcom-json-api-get-taxonomy-endpoint.php 8 years ago class.wpcom-json-api-get-term-endpoint.php 8 years ago class.wpcom-json-api-list-comments-endpoint.php 7 years ago class.wpcom-json-api-list-embeds-endpoint.php 8 years ago class.wpcom-json-api-list-media-endpoint.php 8 years ago class.wpcom-json-api-list-media-v1-1-endpoint.php 8 years ago class.wpcom-json-api-list-media-v1-2-endpoint.php 8 years ago class.wpcom-json-api-list-post-type-taxonomies-endpoint.php 8 years ago class.wpcom-json-api-list-post-types-endpoint.php 8 years ago class.wpcom-json-api-list-posts-endpoint.php 8 years ago class.wpcom-json-api-list-posts-v1-1-endpoint.php 8 years ago class.wpcom-json-api-list-posts-v1-2-endpoint.php 8 years ago class.wpcom-json-api-list-roles-endpoint.php 8 years ago class.wpcom-json-api-list-shortcodes-endpoint.php 8 years ago class.wpcom-json-api-list-terms-endpoint.php 8 years ago class.wpcom-json-api-list-users-endpoint.php 8 years ago class.wpcom-json-api-menus-v1-1-endpoint.php 8 years ago class.wpcom-json-api-post-endpoint.php 7 years ago class.wpcom-json-api-post-v1-1-endpoint.php 8 years ago class.wpcom-json-api-render-embed-endpoint.php 8 years ago class.wpcom-json-api-render-embed-reversal-endpoint.php 8 years ago class.wpcom-json-api-render-endpoint.php 9 years ago class.wpcom-json-api-render-shortcode-endpoint.php 8 years ago class.wpcom-json-api-sharing-buttons-endpoint.php 8 years ago class.wpcom-json-api-site-settings-endpoint.php 7 years ago class.wpcom-json-api-site-settings-v1-2-endpoint.php 7 years ago class.wpcom-json-api-site-settings-v1-3-endpoint.php 7 years ago class.wpcom-json-api-site-settings-v1-4-endpoint.php 7 years ago class.wpcom-json-api-site-user-endpoint.php 8 years ago class.wpcom-json-api-taxonomy-endpoint.php 7 years ago class.wpcom-json-api-update-comment-endpoint.php 8 years ago class.wpcom-json-api-update-customcss.php 8 years ago class.wpcom-json-api-update-media-endpoint.php 8 years ago class.wpcom-json-api-update-media-v1-1-endpoint.php 8 years ago class.wpcom-json-api-update-post-endpoint.php 7 years ago class.wpcom-json-api-update-post-v1-1-endpoint.php 7 years ago class.wpcom-json-api-update-post-v1-2-endpoint.php 7 years ago class.wpcom-json-api-update-site-homepage-endpoint.php 8 years ago class.wpcom-json-api-update-site-logo-endpoint.php 8 years ago class.wpcom-json-api-update-taxonomy-endpoint.php 8 years ago class.wpcom-json-api-update-term-endpoint.php 7 years ago class.wpcom-json-api-update-user-endpoint.php 7 years ago class.wpcom-json-api-upload-media-endpoint.php 8 years ago class.wpcom-json-api-upload-media-v1-1-endpoint.php 8 years ago
class.wpcom-json-api-update-term-endpoint.php
239 lines
1 <?php
2
3 new WPCOM_JSON_API_Update_Term_Endpoint( array(
4 'description' => 'Create a new term.',
5 'group' => 'taxonomy',
6 'stat' => 'terms:new',
7 'method' => 'POST',
8 'path' => '/sites/%s/taxonomies/%s/terms/new',
9 'path_labels' => array(
10 '$site' => '(int|string) Site ID or domain',
11 '$taxonomy' => '(string) Taxonomy',
12 ),
13 'request_format' => array(
14 'name' => '(string) Name of the term',
15 'description' => '(string) A description of the term',
16 'parent' => '(int) The parent ID for the term, if hierarchical',
17 ),
18 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/82974409/taxonomies/post_tag/terms/new',
19 'example_request_data' => array(
20 'headers' => array(
21 'authorization' => 'Bearer YOUR_API_TOKEN'
22 ),
23 'body' => array(
24 'name' => 'Ribs & Chicken'
25 )
26 )
27 ) );
28
29 new WPCOM_JSON_API_Update_Term_Endpoint( array(
30 'description' => 'Edit a term.',
31 'group' => 'taxonomy',
32 'stat' => 'terms:1:POST',
33 'method' => 'POST',
34 'path' => '/sites/%s/taxonomies/%s/terms/slug:%s',
35 'path_labels' => array(
36 '$site' => '(int|string) Site ID or domain',
37 '$taxonomy' => '(string) Taxonomy',
38 '$slug' => '(string) The term slug',
39 ),
40 'request_format' => array(
41 'name' => '(string) Name of the term',
42 'description' => '(string) A description of the term',
43 'parent' => '(int) The parent ID for the term, if hierarchical',
44 ),
45 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/82974409/taxonomies/post_tag/terms/slug:testing-term',
46 'example_request_data' => array(
47 'headers' => array(
48 'authorization' => 'Bearer YOUR_API_TOKEN'
49 ),
50 'body' => array(
51 'description' => 'The most delicious'
52 )
53 )
54 ) );
55
56 new WPCOM_JSON_API_Update_Term_Endpoint( array(
57 'description' => 'Delete a term.',
58 'group' => 'taxonomy',
59 'stat' => 'terms:1:delete',
60 'method' => 'POST',
61 'path' => '/sites/%s/taxonomies/%s/terms/slug:%s/delete',
62 'path_labels' => array(
63 '$site' => '(int|string) Site ID or domain',
64 '$taxonomy' => '(string) Taxonomy',
65 '$slug' => '(string) The term slug',
66 ),
67 'response_format' => array(
68 'slug' => '(string) The slug of the deleted term',
69 'success' => '(bool) Whether the operation was successful',
70 ),
71 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/82974409/taxonomies/post_tag/terms/slug:$term/delete',
72 'example_request_data' => array(
73 'headers' => array(
74 'authorization' => 'Bearer YOUR_API_TOKEN'
75 ),
76 )
77 ) );
78
79 class WPCOM_JSON_API_Update_Term_Endpoint extends WPCOM_JSON_API_Taxonomy_Endpoint {
80 // /sites/%s/taxonomies/%s/terms/new -> $blog_id, $taxonomy
81 // /sites/%s/taxonomies/%s/terms/slug:%s -> $blog_id, $taxonomy, $slug
82 // /sites/%s/taxonomies/%s/terms/slug:%s/delete -> $blog_id, $taxonomy, $slug
83 function callback( $path = '', $blog_id = 0, $taxonomy = 'category', $slug = 0 ) {
84 $slug = urldecode( $slug );
85 $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
86 if ( is_wp_error( $blog_id ) ) {
87 return $blog_id;
88 }
89
90 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
91 $this->load_theme_functions();
92 }
93
94 $user = wp_get_current_user();
95 if ( ! $user || is_wp_error( $user ) || ! $user->ID ) {
96 return new WP_Error( 'authorization_required', 'An active access token must be used to manage taxonomies.', 403 );
97 }
98
99 $taxonomy_meta = get_taxonomy( $taxonomy );
100 if ( false === $taxonomy_meta || (
101 ! $taxonomy_meta->public &&
102 ! current_user_can( $taxonomy_meta->cap->manage_terms ) &&
103 ! current_user_can( $taxonomy_meta->cap->edit_terms ) &&
104 ! current_user_can( $taxonomy_meta->cap->delete_terms ) ) ) {
105 return new WP_Error( 'invalid_taxonomy', 'The taxonomy does not exist', 400 );
106 }
107
108 if ( $this->api->ends_with( $path, '/delete' ) ) {
109 return $this->delete_term( $path, $blog_id, $slug, $taxonomy );
110 } else if ( $this->api->ends_with( $path, '/new' ) ) {
111 return $this->new_term( $path, $blog_id, $taxonomy );
112 }
113
114 return $this->update_term( $path, $blog_id, $slug, $taxonomy );
115 }
116
117 // /sites/%s/taxonomies/%s/terms/new -> $blog_id, $taxonomy
118 function new_term( $path, $blog_id, $taxonomy ) {
119 $args = $this->query_args();
120 $input = $this->input();
121 if ( ! is_array( $input ) || ! $input || ! strlen( $input['name'] ) ) {
122 return new WP_Error( 'invalid_input', 'Unknown data passed', 400 );
123 }
124
125 $tax = get_taxonomy( $taxonomy );
126 if ( ! current_user_can( $tax->cap->manage_terms ) ) {
127 return new WP_Error( 'unauthorized', 'User cannot edit taxonomy', 403 );
128 }
129
130 if ( ! isset( $input['parent'] ) || ! is_taxonomy_hierarchical( $taxonomy ) ) {
131 $input['parent'] = 0;
132 }
133
134 if ( $term = get_term_by( 'name', $input['name'], $taxonomy ) ) {
135 // the same name is allowed as long as the parents are different
136 if ( $input['parent'] === $term->parent ) {
137 return new WP_Error( 'duplicate', 'A taxonomy with that name already exists', 409 );
138 }
139 }
140
141 $data = wp_insert_term( addslashes( $input['name'] ), $taxonomy, array(
142 'description' => isset( $input['description'] ) ? addslashes( $input['description'] ) : '',
143 'parent' => $input['parent']
144 ) );
145
146 if ( is_wp_error( $data ) ) {
147 return $data;
148 }
149
150 $term = get_term_by( 'id', $data['term_id'], $taxonomy );
151
152 $return = $this->get_taxonomy( $term->slug, $taxonomy, $args['context'] );
153 if ( ! $return || is_wp_error( $return ) ) {
154 return $return;
155 }
156
157 /** This action is documented in json-endpoints/class.wpcom-json-api-site-settings-endpoint.php */
158 do_action( 'wpcom_json_api_objects', 'terms' );
159 return $return;
160 }
161
162 // /sites/%s/taxonomies/%s/terms/slug:%s -> $blog_id, $taxonomy, $slug
163 function update_term( $path, $blog_id, $slug, $taxonomy ) {
164 $tax = get_taxonomy( $taxonomy );
165 if ( ! current_user_can( $tax->cap->edit_terms ) ) {
166 return new WP_Error( 'unauthorized', 'User cannot edit taxonomy', 403 );
167 }
168
169 $term = get_term_by( 'slug', $slug, $taxonomy );
170 if ( ! $term || is_wp_error( $term ) ) {
171 return new WP_Error( 'unknown_taxonomy', 'Unknown taxonomy', 404 );
172 }
173
174 $args = $this->query_args();
175 $input = $this->input( false );
176 if ( ! is_array( $input ) || ! $input ) {
177 return new WP_Error( 'invalid_input', 'Invalid request input', 400 );
178 }
179
180 $update = array();
181 if ( ! empty( $input['parent'] ) || is_taxonomy_hierarchical( $taxonomy ) ) {
182 $update['parent'] = $input['parent'];
183 }
184
185 if ( ! empty( $input['description'] ) ) {
186 $update['description'] = addslashes( $input['description'] );
187 }
188
189 if ( ! empty( $input['name'] ) ) {
190 $update['name'] = addslashes( $input['name'] );
191 }
192
193 $data = wp_update_term( $term->term_id, $taxonomy, $update );
194 if ( is_wp_error( $data ) ) {
195 return $data;
196 }
197
198 $term = get_term_by( 'id', $data['term_id'], $taxonomy );
199
200 $return = $this->get_taxonomy( $term->slug, $taxonomy, $args['context'] );
201 if ( ! $return || is_wp_error( $return ) ) {
202 return $return;
203 }
204
205 /** This action is documented in json-endpoints/class.wpcom-json-api-site-settings-endpoint.php */
206 do_action( 'wpcom_json_api_objects', 'terms' );
207 return $return;
208 }
209
210 // /sites/%s/taxonomies/%s/terms/slug:%s/delete -> $blog_id, $taxonomy, $slug
211 function delete_term( $path, $blog_id, $slug, $taxonomy ) {
212 $term = get_term_by( 'slug', $slug, $taxonomy );
213 $tax = get_taxonomy( $taxonomy );
214 if ( ! current_user_can( $tax->cap->delete_terms ) ) {
215 return new WP_Error( 'unauthorized', 'User cannot edit taxonomy', 403 );
216 }
217
218 if ( ! $term || is_wp_error( $term ) ) {
219 return new WP_Error( 'unknown_taxonomy', 'Unknown taxonomy', 404 );
220 }
221
222 $args = $this->query_args();
223 $return = $this->get_taxonomy( $term->slug, $taxonomy, $args['context'] );
224 if ( ! $return || is_wp_error( $return ) ) {
225 return $return;
226 }
227
228 /** This action is documented in json-endpoints/class.wpcom-json-api-site-settings-endpoint.php */
229 do_action( 'wpcom_json_api_objects', 'terms' );
230
231 wp_delete_term( $term->term_id, $taxonomy );
232
233 return array(
234 'slug' => (string) $term->slug,
235 'success' => true
236 );
237 }
238 }
239