Updating custom taxonomies remotely
-
I'm trying to update custom taxonimies "brands" created with jetengine plugin through rest api remotely and i've added the following snippet:
// Register the 'brands' field for the 'product' post type in the REST API
add_action('rest_api_init', function() {
? ? register_rest_field('product', 'brands', array(
? ? ? ? 'get_callback' => function($product) {
? ? ? ? ? ? return wp_get_post_terms($product['id'], 'brands');
? ? ? ? },
? ? ? ? 'update_callback' => function($meta, $product) {
? ? ? ? ? ? if (!empty($meta)) {
? ? ? ? ? ? ? ? $term_ids = array();
? ? ? ? ? ? ? ? foreach ($meta as $term) {
? ? ? ? ? ? ? ? ? ? if (isset($term['term_id']) && is_numeric($term['term_id'])) {
? ? ? ? ? ? ? ? ? ? ? ? $term_ids[] = (int) $term['term_id'];
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (!empty($term_ids)) {
? ? ? ? ? ? ? ? ? ? wp_set_post_terms($product->ID, $term_ids, 'brands');
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return true; // Return true to indicate the update was successful
? ? ? ? },
? ? ? ? 'schema' => null,
? ? ));
});
// Handle PUT request to update the 'brands' taxonomy via API
add_action('rest_api_init', function() {
? ? register_rest_route('my_custom_namespace/v1', '/product/(?P<id>\d+)/brands', array(
? ? ? ? 'methods' => 'PUT',
? ? ? ? 'callback' => function($request) {
? ? ? ? ? ? $product_id = (int) $request['id'];
? ? ? ? ? ? $terms = $request->get_param('brands');
? ? ? ? ? ? if (!empty($terms) && is_array($terms)) {
? ? ? ? ? ? ? ? $term_ids = array();
? ? ? ? ? ? ? ? foreach ($terms as $term) {
? ? ? ? ? ? ? ? ? ? if (is_numeric($term)) {
? ? ? ? ? ? ? ? ? ? ? ? $term_ids[] = (int) $term;
? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? $term_obj = get_term_by('name', $term, 'brands');
? ? ? ? ? ? ? ? ? ? ? ? if ($term_obj) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? $term_ids[] = $term_obj->term_id;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (!empty($term_ids)) {
? ? ? ? ? ? ? ? ? ? wp_set_post_terms($product_id, $term_ids, 'brands');
? ? ? ? ? ? ? ? ? ? return new WP_REST_Response('Brands updated successfully', 200);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return new WP_Error('no_terms', 'No valid terms provided', array('status' => 400));
? ? ? ? },
? ? ? ? 'permission_callback' => function() {
? ? ? ? ? ? return current_user_can('edit_posts');
? ? ? ? },
? ? ));
});
// Remote taxonomy update using wp_remote_post
$response = wp_remote_post( $api_url, array(
? ? 'method' => 'PUT',
? ? 'headers' => array(
? ? ? ? 'Authorization' => 'Basic ' . base64_encode( $api_key . ':' . $api_secret ),
? ? ? ? 'Content-Type' => 'application/json',
? ? ),
? ? 'body' => json_encode( array(
? ? ? ? 'brands' => array( 'term1', 'term2' ) // Replace with your terms
? ? ) ),
) );
I can see the taxonimies but i cannot update them, can you help?The page I need help with: [log in to see the link]
Viewing 3 replies - 1 through 3 (of 3 total)
Viewing 3 replies - 1 through 3 (of 3 total)
- You must be logged in to reply to this topic.