Changeset 3284442
- Timestamp:
- 04/30/2025 12:10:02 AM (11 months ago)
- Location:
- content-api
- Files:
-
- 4 edited
- 1 copied
-
tags/1.0.2 (copied) (copied from content-api/trunk)
-
tags/1.0.2/content-api.php (modified) (3 diffs)
-
tags/1.0.2/readme.txt (modified) (3 diffs)
-
trunk/content-api.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
content-api/tags/1.0.2/content-api.php
r3275188 r3284442 5 5 * Plugin URI: https://www.polyplugins.com/contact/ 6 6 * Description: Adds various endpoints to create content 7 * Version: 1.0. 17 * Version: 1.0.2 8 8 * Requires at least: 6.5 9 9 * Requires PHP: 7.4 … … 108 108 'methods' => 'GET', 109 109 'callback' => array($this, 'get_product_attributes'), 110 'permission_callback' => array($this, 'has_permission'), // Add your permission callback for security 111 )); 112 113 register_rest_route('content-api/v1', '/taxonomy/brand/', array( 114 'methods' => 'GET', 115 'callback' => array($this, 'get_brand'), 116 'permission_callback' => array($this, 'has_permission'), // Add your permission callback for security 117 )); 118 119 register_rest_route('content-api/v1', '/taxonomy/brand/', array( 120 'methods' => 'PATCH', 121 'callback' => array($this, 'update_brand'), 122 'permission_callback' => array($this, 'has_permission'), // Add your permission callback for security 123 )); 124 125 register_rest_route('content-api/v1', '/taxonomy/brand/', array( 126 'methods' => 'POST', 127 'callback' => array($this, 'create_brand'), 110 128 'permission_callback' => array($this, 'has_permission'), // Add your permission callback for security 111 129 )); … … 806 824 807 825 /** 826 * Get product brands 827 * 828 * @param WP_REST_Request $request 829 * @return WP_REST_Response 830 */ 831 public function get_brand(WP_REST_Request $request) { 832 $params = $request->get_params(); 833 $taxonomy = isset($params['taxonomy']) ? sanitize_text_field($params['taxonomy']) : 'product_brand'; 834 $id = isset($params['id']) ? absint($params['id']) : 0; 835 $slug = isset($params['slug']) ? sanitize_title($params['slug']) : ''; 836 $name = isset($params['name']) ? sanitize_text_field($params['name']) : ''; 837 838 if ($id) { 839 $term = get_term($id, $taxonomy); 840 } elseif ($slug) { 841 $term = get_term_by('slug', $slug, $taxonomy); 842 } elseif ($name) { 843 $term = get_term_by('name', $name, $taxonomy); 844 } 845 846 if (empty($term) || is_wp_error($term)) { 847 return new WP_Error('no_brand_found', "No brand found under the " . $taxonomy . " taxonomy.", array('status' => 400)); 848 } 849 850 $term_id = $term->term_id; 851 $brand_data = (array) $term; 852 853 // Get thumbnail ID and URL 854 $thumbnail_id = get_term_meta($term_id, 'thumbnail_id', true); 855 $thumbnail_url = $thumbnail_id ? wp_get_attachment_url($thumbnail_id) : ''; 856 857 if ($thumbnail_url) { 858 $brand_data['thumbnail'] = $thumbnail_url; 859 } 860 861 // Get Yoast SEO meta fields 862 $yoast_option = get_option('wpseo_taxonomy_meta'); 863 $yoast_data = []; 864 865 if (isset($yoast_option[$taxonomy]) && isset($yoast_option[$taxonomy][$term_id])) { 866 $yoast_raw = $yoast_option[$taxonomy][$term_id]; 867 $yoast_data = array( 868 'title' => $yoast_raw['wpseo_title'] ?? '', 869 'description' => $yoast_raw['wpseo_desc'] ?? '', 870 'premium' => array( 871 'social_appearance' => array( 872 'title' => $yoast_raw['wpseo_opengraph-title'] ?? '', 873 'description' => $yoast_raw['wpseo_opengraph-description'] ?? '', 874 'image' => $yoast_raw['wpseo_opengraph-image'] ?? '', 875 ), 876 'x' => array( 877 'title' => $yoast_raw['wpseo_twitter-title'] ?? '', 878 'description' => $yoast_raw['wpseo_twitter-description'] ?? '', 879 'image' => $yoast_raw['wpseo_twitter-image'] ?? '', 880 ) 881 ) 882 ); 883 } 884 885 $brand_data['yoast'] = $yoast_data; 886 887 return new WP_REST_Response(array( 888 'success' => true, 889 'data' => $brand_data, 890 ), 201); 891 } 892 893 /** 894 * Get product brands 895 * 896 * @param WP_REST_Request $request 897 * @return WP_REST_Response 898 */ 899 public function update_brand(WP_REST_Request $request) { 900 $fields = $request->get_json_params(); 901 $id = isset($fields['id']) ? absint($fields['id']) : 0; 902 $name = isset($fields['name']) ? sanitize_text_field($fields['name']) : ''; 903 $description = isset($fields['description']) ? wp_kses_post($fields['description']) : ''; 904 $slug = isset($fields['slug']) ? sanitize_title($fields['slug']) : ''; 905 $parent_id = isset($fields['parent']) ? absint($fields['parent']) : ''; 906 $taxonomy = isset($fields['taxonomy']) ? sanitize_text_field($fields['taxonomy']) : 'product_brand'; 907 908 // Basic input validation 909 if (!$id) { 910 return new WP_Error('missing_identifier', 'Brand ID is required', array('status' => 400)); 911 } 912 913 $term = get_term($id, $taxonomy); 914 915 if (!$term || is_wp_error($term)) { 916 return new WP_Error('brand_not_found', 'Brand not found', array('status' => 404)); 917 } 918 919 $term_id = $term->term_id; 920 921 $term_args = []; 922 923 if ($name) { 924 $term_args['name'] = $name; 925 } 926 927 if ($description) { 928 $term_args['description'] = $description; 929 } 930 931 if ($slug) { 932 $term_args['slug'] = $slug; 933 } 934 935 if ($parent_id > 0) { 936 $parent_term = get_term($parent_id, $taxonomy); 937 938 if ($parent_term && !is_wp_error($parent_term)) { 939 $term_args['parent'] = $parent_id; 940 } else { 941 return new WP_Error('invalid_parent', 'The specified parent brand does not exist.', array('status' => 400)); 942 } 943 } elseif ($parent_id === 0) { 944 $term_args['parent'] = 0; // Remove parent 945 } 946 947 if (!empty($term_args)) { 948 $result = wp_update_term($term_id, $taxonomy, $term_args); 949 950 if (is_wp_error($result)) { 951 return new WP_Error('term_update_failed', 'Failed to update brand term', array('status' => 500)); 952 } 953 } 954 955 // Update Yoast fields 956 if (isset($fields['yoast']) && is_array($fields['yoast'])) { 957 $yoast_option = get_option('wpseo_taxonomy_meta'); 958 959 if (!isset($yoast_option[$taxonomy])) { 960 $yoast_option[$taxonomy] = []; 961 } 962 963 if (!isset($yoast_option[$taxonomy][$term_id])) { 964 $yoast_option[$taxonomy][$term_id] = []; 965 } 966 967 $yoast_input = $fields['yoast']; 968 969 if (isset($yoast_input['title']) && $yoast_input['title']) { 970 $yoast_option[$taxonomy][$term_id]['wpseo_title'] = $yoast_input['title']; 971 } 972 973 if (isset($yoast_input['description']) && $yoast_input['description']) { 974 $yoast_option[$taxonomy][$term_id]['wpseo_desc'] = $yoast_input['description']; 975 } 976 977 if (isset($yoast_input['premium']['social_appearance']['title']) && $yoast_input['premium']['social_appearance']['title']) { 978 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-title'] = $yoast_input['premium']['social_appearance']['title']; 979 } 980 981 if (isset($yoast_input['premium']['social_appearance']['description']) && $yoast_input['premium']['social_appearance']['description']) { 982 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-description'] = $yoast_input['premium']['social_appearance']['description']; 983 } 984 985 if (isset($yoast_input['premium']['social_appearance']['image']) && $yoast_input['premium']['social_appearance']['image']) { 986 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-image'] = $yoast_input['premium']['social_appearance']['image']; 987 } 988 989 if (isset($yoast_input['premium']['x']['title']) && $yoast_input['premium']['x']['title']) { 990 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-title'] = $yoast_input['premium']['x']['title']; 991 } 992 993 if (isset($yoast_input['premium']['x']['description']) && $yoast_input['premium']['x']['description']) { 994 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-description'] = $yoast_input['premium']['x']['description']; 995 } 996 997 if (isset($yoast_input['premium']['x']['image']) && $yoast_input['premium']['x']['image']) { 998 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-image'] = $yoast_input['premium']['x']['image']; 999 } 1000 1001 update_option('wpseo_taxonomy_meta', $yoast_option); 1002 } 1003 1004 return new WP_REST_Response(array( 1005 'success' => true, 1006 'brand_id' => $term_id, 1007 'message' => 'Brand updated successfully.' 1008 ), 200); 1009 } 1010 1011 /** 1012 * Create a new product brand 1013 * 1014 * @param WP_REST_Request $request 1015 * @return WP_REST_Response 1016 */ 1017 public function create_brand(WP_REST_Request $request) { 1018 $fields = $request->get_json_params(); 1019 $name = isset($fields['name']) ? sanitize_text_field($fields['name']) : ''; 1020 $description = isset($fields['description']) ? wp_kses_post($fields['description']) : ''; 1021 $slug = isset($fields['slug']) ? sanitize_title($fields['slug']) : ''; 1022 $parent_id = isset($fields['parent']) ? absint($fields['parent']) : 0; 1023 $taxonomy = isset($fields['taxonomy']) ? sanitize_text_field($fields['taxonomy']) : 'product_brand'; 1024 1025 // Validate name 1026 if (empty($name)) { 1027 return new WP_Error('missing_name', 'Brand name is required.', array('status' => 400)); 1028 } 1029 1030 $term_args = array( 1031 'description' => $description, 1032 'slug' => $slug, 1033 'parent' => 0 1034 ); 1035 1036 if ($parent_id > 0) { 1037 $parent_term = get_term($parent_id, $taxonomy); 1038 1039 if ($parent_term && !is_wp_error($parent_term)) { 1040 $term_args['parent'] = $parent_id; 1041 } else { 1042 return new WP_Error('invalid_parent', 'The specified parent brand does not exist.', array('status' => 400)); 1043 } 1044 } 1045 1046 // Create the term 1047 $result = wp_insert_term($name, $taxonomy, $term_args); 1048 1049 if (is_wp_error($result)) { 1050 return new WP_Error('term_creation_failed', $result->get_error_message(), array('status' => 500)); 1051 } 1052 1053 $term_id = $result['term_id']; 1054 1055 // Update Yoast fields 1056 if (isset($fields['yoast']) && is_array($fields['yoast'])) { 1057 $yoast_option = get_option('wpseo_taxonomy_meta'); 1058 1059 if (!isset($yoast_option[$taxonomy])) { 1060 $yoast_option[$taxonomy] = array(); 1061 } 1062 1063 if (!isset($yoast_option[$taxonomy][$term_id])) { 1064 $yoast_option[$taxonomy][$term_id] = array(); 1065 } 1066 1067 $yoast_input = $fields['yoast']; 1068 1069 if (!empty($yoast_input['title'])) { 1070 $yoast_option[$taxonomy][$term_id]['wpseo_title'] = $yoast_input['title']; 1071 } 1072 1073 if (!empty($yoast_input['description'])) { 1074 $yoast_option[$taxonomy][$term_id]['wpseo_desc'] = $yoast_input['description']; 1075 } 1076 1077 if (!empty($yoast_input['premium']['social_appearance']['title'])) { 1078 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-title'] = $yoast_input['premium']['social_appearance']['title']; 1079 } 1080 1081 if (!empty($yoast_input['premium']['social_appearance']['description'])) { 1082 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-description'] = $yoast_input['premium']['social_appearance']['description']; 1083 } 1084 1085 if (!empty($yoast_input['premium']['social_appearance']['image'])) { 1086 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-image'] = $yoast_input['premium']['social_appearance']['image']; 1087 } 1088 1089 if (!empty($yoast_input['premium']['x']['title'])) { 1090 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-title'] = $yoast_input['premium']['x']['title']; 1091 } 1092 1093 if (!empty($yoast_input['premium']['x']['description'])) { 1094 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-description'] = $yoast_input['premium']['x']['description']; 1095 } 1096 1097 if (!empty($yoast_input['premium']['x']['image'])) { 1098 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-image'] = $yoast_input['premium']['x']['image']; 1099 } 1100 1101 update_option('wpseo_taxonomy_meta', $yoast_option); 1102 } 1103 1104 return new WP_REST_Response(array( 1105 'success' => true, 1106 'brand_id' => $term_id, 1107 'message' => 'Brand created successfully.' 1108 ), 201); 1109 } 1110 1111 /** 808 1112 * Get terms 809 1113 * -
content-api/tags/1.0.2/readme.txt
r3275189 r3284442 3 3 Tags: content api, rest api, content, creative, api 4 4 Tested up to: 6.8 5 Stable tag: 1.0. 15 Stable tag: 1.0.2 6 6 Requires PHP: 7.4 7 7 License: GPLv3 … … 30 30 * Fetch terms 31 31 * Update terms 32 * Capability to a ssYoast title, description, social titles, social descriptions, and social images when adding a post or updating a product32 * Capability to add Yoast title, description, social titles, social descriptions, and social images when adding a post or updating a product 33 33 * Secure access through API tokens for authentication 34 34 * Admin page to manage the plugin settings, including the API token … … 85 85 == Changelog == 86 86 87 = 1.0.2 = 88 * Added: [Get Brand](https://www.polyplugins.com/docs/content-api/api/get-brand/) endpoint 89 * Added: [Update Brand](https://www.polyplugins.com/docs/content-api/api/update-brand/) endpoint 90 * Added: [Create Brand](https://www.polyplugins.com/docs/content-api/api/create-brand/) endpoint 91 87 92 = 1.0.1 = 88 93 * Added: [Get Product Brands](https://www.polyplugins.com/docs/content-api/api/get-product-brands/) endpoint -
content-api/trunk/content-api.php
r3275188 r3284442 5 5 * Plugin URI: https://www.polyplugins.com/contact/ 6 6 * Description: Adds various endpoints to create content 7 * Version: 1.0. 17 * Version: 1.0.2 8 8 * Requires at least: 6.5 9 9 * Requires PHP: 7.4 … … 108 108 'methods' => 'GET', 109 109 'callback' => array($this, 'get_product_attributes'), 110 'permission_callback' => array($this, 'has_permission'), // Add your permission callback for security 111 )); 112 113 register_rest_route('content-api/v1', '/taxonomy/brand/', array( 114 'methods' => 'GET', 115 'callback' => array($this, 'get_brand'), 116 'permission_callback' => array($this, 'has_permission'), // Add your permission callback for security 117 )); 118 119 register_rest_route('content-api/v1', '/taxonomy/brand/', array( 120 'methods' => 'PATCH', 121 'callback' => array($this, 'update_brand'), 122 'permission_callback' => array($this, 'has_permission'), // Add your permission callback for security 123 )); 124 125 register_rest_route('content-api/v1', '/taxonomy/brand/', array( 126 'methods' => 'POST', 127 'callback' => array($this, 'create_brand'), 110 128 'permission_callback' => array($this, 'has_permission'), // Add your permission callback for security 111 129 )); … … 806 824 807 825 /** 826 * Get product brands 827 * 828 * @param WP_REST_Request $request 829 * @return WP_REST_Response 830 */ 831 public function get_brand(WP_REST_Request $request) { 832 $params = $request->get_params(); 833 $taxonomy = isset($params['taxonomy']) ? sanitize_text_field($params['taxonomy']) : 'product_brand'; 834 $id = isset($params['id']) ? absint($params['id']) : 0; 835 $slug = isset($params['slug']) ? sanitize_title($params['slug']) : ''; 836 $name = isset($params['name']) ? sanitize_text_field($params['name']) : ''; 837 838 if ($id) { 839 $term = get_term($id, $taxonomy); 840 } elseif ($slug) { 841 $term = get_term_by('slug', $slug, $taxonomy); 842 } elseif ($name) { 843 $term = get_term_by('name', $name, $taxonomy); 844 } 845 846 if (empty($term) || is_wp_error($term)) { 847 return new WP_Error('no_brand_found', "No brand found under the " . $taxonomy . " taxonomy.", array('status' => 400)); 848 } 849 850 $term_id = $term->term_id; 851 $brand_data = (array) $term; 852 853 // Get thumbnail ID and URL 854 $thumbnail_id = get_term_meta($term_id, 'thumbnail_id', true); 855 $thumbnail_url = $thumbnail_id ? wp_get_attachment_url($thumbnail_id) : ''; 856 857 if ($thumbnail_url) { 858 $brand_data['thumbnail'] = $thumbnail_url; 859 } 860 861 // Get Yoast SEO meta fields 862 $yoast_option = get_option('wpseo_taxonomy_meta'); 863 $yoast_data = []; 864 865 if (isset($yoast_option[$taxonomy]) && isset($yoast_option[$taxonomy][$term_id])) { 866 $yoast_raw = $yoast_option[$taxonomy][$term_id]; 867 $yoast_data = array( 868 'title' => $yoast_raw['wpseo_title'] ?? '', 869 'description' => $yoast_raw['wpseo_desc'] ?? '', 870 'premium' => array( 871 'social_appearance' => array( 872 'title' => $yoast_raw['wpseo_opengraph-title'] ?? '', 873 'description' => $yoast_raw['wpseo_opengraph-description'] ?? '', 874 'image' => $yoast_raw['wpseo_opengraph-image'] ?? '', 875 ), 876 'x' => array( 877 'title' => $yoast_raw['wpseo_twitter-title'] ?? '', 878 'description' => $yoast_raw['wpseo_twitter-description'] ?? '', 879 'image' => $yoast_raw['wpseo_twitter-image'] ?? '', 880 ) 881 ) 882 ); 883 } 884 885 $brand_data['yoast'] = $yoast_data; 886 887 return new WP_REST_Response(array( 888 'success' => true, 889 'data' => $brand_data, 890 ), 201); 891 } 892 893 /** 894 * Get product brands 895 * 896 * @param WP_REST_Request $request 897 * @return WP_REST_Response 898 */ 899 public function update_brand(WP_REST_Request $request) { 900 $fields = $request->get_json_params(); 901 $id = isset($fields['id']) ? absint($fields['id']) : 0; 902 $name = isset($fields['name']) ? sanitize_text_field($fields['name']) : ''; 903 $description = isset($fields['description']) ? wp_kses_post($fields['description']) : ''; 904 $slug = isset($fields['slug']) ? sanitize_title($fields['slug']) : ''; 905 $parent_id = isset($fields['parent']) ? absint($fields['parent']) : ''; 906 $taxonomy = isset($fields['taxonomy']) ? sanitize_text_field($fields['taxonomy']) : 'product_brand'; 907 908 // Basic input validation 909 if (!$id) { 910 return new WP_Error('missing_identifier', 'Brand ID is required', array('status' => 400)); 911 } 912 913 $term = get_term($id, $taxonomy); 914 915 if (!$term || is_wp_error($term)) { 916 return new WP_Error('brand_not_found', 'Brand not found', array('status' => 404)); 917 } 918 919 $term_id = $term->term_id; 920 921 $term_args = []; 922 923 if ($name) { 924 $term_args['name'] = $name; 925 } 926 927 if ($description) { 928 $term_args['description'] = $description; 929 } 930 931 if ($slug) { 932 $term_args['slug'] = $slug; 933 } 934 935 if ($parent_id > 0) { 936 $parent_term = get_term($parent_id, $taxonomy); 937 938 if ($parent_term && !is_wp_error($parent_term)) { 939 $term_args['parent'] = $parent_id; 940 } else { 941 return new WP_Error('invalid_parent', 'The specified parent brand does not exist.', array('status' => 400)); 942 } 943 } elseif ($parent_id === 0) { 944 $term_args['parent'] = 0; // Remove parent 945 } 946 947 if (!empty($term_args)) { 948 $result = wp_update_term($term_id, $taxonomy, $term_args); 949 950 if (is_wp_error($result)) { 951 return new WP_Error('term_update_failed', 'Failed to update brand term', array('status' => 500)); 952 } 953 } 954 955 // Update Yoast fields 956 if (isset($fields['yoast']) && is_array($fields['yoast'])) { 957 $yoast_option = get_option('wpseo_taxonomy_meta'); 958 959 if (!isset($yoast_option[$taxonomy])) { 960 $yoast_option[$taxonomy] = []; 961 } 962 963 if (!isset($yoast_option[$taxonomy][$term_id])) { 964 $yoast_option[$taxonomy][$term_id] = []; 965 } 966 967 $yoast_input = $fields['yoast']; 968 969 if (isset($yoast_input['title']) && $yoast_input['title']) { 970 $yoast_option[$taxonomy][$term_id]['wpseo_title'] = $yoast_input['title']; 971 } 972 973 if (isset($yoast_input['description']) && $yoast_input['description']) { 974 $yoast_option[$taxonomy][$term_id]['wpseo_desc'] = $yoast_input['description']; 975 } 976 977 if (isset($yoast_input['premium']['social_appearance']['title']) && $yoast_input['premium']['social_appearance']['title']) { 978 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-title'] = $yoast_input['premium']['social_appearance']['title']; 979 } 980 981 if (isset($yoast_input['premium']['social_appearance']['description']) && $yoast_input['premium']['social_appearance']['description']) { 982 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-description'] = $yoast_input['premium']['social_appearance']['description']; 983 } 984 985 if (isset($yoast_input['premium']['social_appearance']['image']) && $yoast_input['premium']['social_appearance']['image']) { 986 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-image'] = $yoast_input['premium']['social_appearance']['image']; 987 } 988 989 if (isset($yoast_input['premium']['x']['title']) && $yoast_input['premium']['x']['title']) { 990 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-title'] = $yoast_input['premium']['x']['title']; 991 } 992 993 if (isset($yoast_input['premium']['x']['description']) && $yoast_input['premium']['x']['description']) { 994 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-description'] = $yoast_input['premium']['x']['description']; 995 } 996 997 if (isset($yoast_input['premium']['x']['image']) && $yoast_input['premium']['x']['image']) { 998 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-image'] = $yoast_input['premium']['x']['image']; 999 } 1000 1001 update_option('wpseo_taxonomy_meta', $yoast_option); 1002 } 1003 1004 return new WP_REST_Response(array( 1005 'success' => true, 1006 'brand_id' => $term_id, 1007 'message' => 'Brand updated successfully.' 1008 ), 200); 1009 } 1010 1011 /** 1012 * Create a new product brand 1013 * 1014 * @param WP_REST_Request $request 1015 * @return WP_REST_Response 1016 */ 1017 public function create_brand(WP_REST_Request $request) { 1018 $fields = $request->get_json_params(); 1019 $name = isset($fields['name']) ? sanitize_text_field($fields['name']) : ''; 1020 $description = isset($fields['description']) ? wp_kses_post($fields['description']) : ''; 1021 $slug = isset($fields['slug']) ? sanitize_title($fields['slug']) : ''; 1022 $parent_id = isset($fields['parent']) ? absint($fields['parent']) : 0; 1023 $taxonomy = isset($fields['taxonomy']) ? sanitize_text_field($fields['taxonomy']) : 'product_brand'; 1024 1025 // Validate name 1026 if (empty($name)) { 1027 return new WP_Error('missing_name', 'Brand name is required.', array('status' => 400)); 1028 } 1029 1030 $term_args = array( 1031 'description' => $description, 1032 'slug' => $slug, 1033 'parent' => 0 1034 ); 1035 1036 if ($parent_id > 0) { 1037 $parent_term = get_term($parent_id, $taxonomy); 1038 1039 if ($parent_term && !is_wp_error($parent_term)) { 1040 $term_args['parent'] = $parent_id; 1041 } else { 1042 return new WP_Error('invalid_parent', 'The specified parent brand does not exist.', array('status' => 400)); 1043 } 1044 } 1045 1046 // Create the term 1047 $result = wp_insert_term($name, $taxonomy, $term_args); 1048 1049 if (is_wp_error($result)) { 1050 return new WP_Error('term_creation_failed', $result->get_error_message(), array('status' => 500)); 1051 } 1052 1053 $term_id = $result['term_id']; 1054 1055 // Update Yoast fields 1056 if (isset($fields['yoast']) && is_array($fields['yoast'])) { 1057 $yoast_option = get_option('wpseo_taxonomy_meta'); 1058 1059 if (!isset($yoast_option[$taxonomy])) { 1060 $yoast_option[$taxonomy] = array(); 1061 } 1062 1063 if (!isset($yoast_option[$taxonomy][$term_id])) { 1064 $yoast_option[$taxonomy][$term_id] = array(); 1065 } 1066 1067 $yoast_input = $fields['yoast']; 1068 1069 if (!empty($yoast_input['title'])) { 1070 $yoast_option[$taxonomy][$term_id]['wpseo_title'] = $yoast_input['title']; 1071 } 1072 1073 if (!empty($yoast_input['description'])) { 1074 $yoast_option[$taxonomy][$term_id]['wpseo_desc'] = $yoast_input['description']; 1075 } 1076 1077 if (!empty($yoast_input['premium']['social_appearance']['title'])) { 1078 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-title'] = $yoast_input['premium']['social_appearance']['title']; 1079 } 1080 1081 if (!empty($yoast_input['premium']['social_appearance']['description'])) { 1082 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-description'] = $yoast_input['premium']['social_appearance']['description']; 1083 } 1084 1085 if (!empty($yoast_input['premium']['social_appearance']['image'])) { 1086 $yoast_option[$taxonomy][$term_id]['wpseo_opengraph-image'] = $yoast_input['premium']['social_appearance']['image']; 1087 } 1088 1089 if (!empty($yoast_input['premium']['x']['title'])) { 1090 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-title'] = $yoast_input['premium']['x']['title']; 1091 } 1092 1093 if (!empty($yoast_input['premium']['x']['description'])) { 1094 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-description'] = $yoast_input['premium']['x']['description']; 1095 } 1096 1097 if (!empty($yoast_input['premium']['x']['image'])) { 1098 $yoast_option[$taxonomy][$term_id]['wpseo_twitter-image'] = $yoast_input['premium']['x']['image']; 1099 } 1100 1101 update_option('wpseo_taxonomy_meta', $yoast_option); 1102 } 1103 1104 return new WP_REST_Response(array( 1105 'success' => true, 1106 'brand_id' => $term_id, 1107 'message' => 'Brand created successfully.' 1108 ), 201); 1109 } 1110 1111 /** 808 1112 * Get terms 809 1113 * -
content-api/trunk/readme.txt
r3275189 r3284442 3 3 Tags: content api, rest api, content, creative, api 4 4 Tested up to: 6.8 5 Stable tag: 1.0. 15 Stable tag: 1.0.2 6 6 Requires PHP: 7.4 7 7 License: GPLv3 … … 30 30 * Fetch terms 31 31 * Update terms 32 * Capability to a ssYoast title, description, social titles, social descriptions, and social images when adding a post or updating a product32 * Capability to add Yoast title, description, social titles, social descriptions, and social images when adding a post or updating a product 33 33 * Secure access through API tokens for authentication 34 34 * Admin page to manage the plugin settings, including the API token … … 85 85 == Changelog == 86 86 87 = 1.0.2 = 88 * Added: [Get Brand](https://www.polyplugins.com/docs/content-api/api/get-brand/) endpoint 89 * Added: [Update Brand](https://www.polyplugins.com/docs/content-api/api/update-brand/) endpoint 90 * Added: [Create Brand](https://www.polyplugins.com/docs/content-api/api/create-brand/) endpoint 91 87 92 = 1.0.1 = 88 93 * Added: [Get Product Brands](https://www.polyplugins.com/docs/content-api/api/get-product-brands/) endpoint
Note: See TracChangeset
for help on using the changeset viewer.