{"id":22161,"date":"2025-10-15T14:08:18","date_gmt":"2025-10-15T11:08:18","guid":{"rendered":"https:\/\/mapsly.com?page_id=22161"},"modified":"2025-10-15T14:09:03","modified_gmt":"2025-10-15T11:09:03","slug":"tp-sync-api","status":"publish","type":"page","link":"https:\/\/mapsly.com\/vi\/tp-sync-api\/","title":{"rendered":"tp-sync-api"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"22161\" class=\"elementor elementor-22161\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-da1eb59 e-flex e-con-boxed e-con e-parent\" data-id=\"da1eb59\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-614ea51 elementor-widget elementor-widget-html\" data-id=\"614ea51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"ru\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>T\u00e0i li\u1ec7u API cho t\u00edch h\u1ee3p b\u1ea3n d\u1ecbch TranslatePress (TP Sync API)<\/title>\r\n    <style>\r\n        body { \r\n       \r\n        table { \r\n            border-collapse: collapse; \r\n            width: 100%; \r\n            margin: 15px 0; \r\n        }\r\n        th, td { \r\n            border: 1px solid #ddd; \r\n            padding: 10px; \r\n            text-align: left; \r\n        }\r\n        th { \r\n            background-color: #f2f2f2; \r\n            font-weight: bold; \r\n        }\r\n        pre { \r\n            background: #f4f4f4; \r\n            padding: 15px; \r\n            border-radius: 5px; \r\n            overflow-x: auto; \r\n            border: 1px solid #ddd; \r\n        }\r\n        code { \r\n            font-family: 'Courier New', monospace; \r\n            font-size: 14px; \r\n        }\r\n        ul { \r\n            margin: 10px 0; \r\n            padding-left: 25px; \r\n        }\r\n        .card {\r\n            background: #fff;\r\n            padding: 20px;\r\n            margin: 20px 0;\r\n            border-radius: 8px;\r\n            box-shadow: 0 2px 4px rgba(0,0,0,0.1);\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"card\">\r\n    <h1>T\u00e0i li\u1ec7u API cho t\u00edch h\u1ee3p b\u1ea3n d\u1ecbch TranslatePress (TP Sync API)<\/h1>\r\n\r\n    <p>API n\u00e0y cung c\u1ea5p hai \u0111i\u1ec3m cu\u1ed1i \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi c\u00e1c chu\u1ed7i d\u1ecbch trong plugin TranslatePress. Ng\u00f4n ng\u1eef c\u01a1 s\u1edf l\u00e0 ti\u1ebfng Anh (<code>en_us<\/code>). T\u1ea5t c\u1ea3 c\u00e1c y\u00eau c\u1ea7u \u0111\u1ec1u y\u00eau c\u1ea7u x\u00e1c th\u1ef1c qua Bearer token (l\u1ea5y trong admin WordPress d\u01b0\u1edbi menu \"TP Sync\").<\/p>\r\n\r\n    <p><strong>URL c\u01a1 b\u1ea3n:<\/strong> <code>https:\/\/your-site.com\/wp-json\/tp-sync\/v1\/<\/code><\/p>\r\n<\/div>\r\n\r\n<div class=\"card\">\r\n    <h2>1. L\u1ea5y c\u00e1c d\u00f2ng c\u1ea7n d\u1ecbch (GET \/keys)<\/h2>\r\n\r\n    <p>\u0110\u1ea7u cu\u1ed1i n\u00e0y tr\u1ea3 v\u1ec1 danh s\u00e1ch c\u00e1c chu\u1ed7i t\u1eeb t\u1eeb \u0111i\u1ec3n TranslatePress cho ng\u00f4n ng\u1eef \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh. M\u1ed7i chu\u1ed7i bao g\u1ed3m ID (theo \u0111\u1ecbnh d\u1ea1ng <code>t\u1eeb \u0111i\u1ec3n: {id}<\/code>), v\u0103n b\u1ea3n g\u1ed1c b\u1eb1ng ti\u1ebfng Anh, b\u1ea3n d\u1ecbch hi\u1ec7n t\u1ea1i, tr\u1ea1ng th\u00e1i v\u00e0 si\u00eau d\u1eef li\u1ec7u ph\u00e2n trang. S\u1eafp x\u1ebfp theo ID DESC (m\u1edbi nh\u1ea5t \u1edf tr\u00ean). Ng\u00e0y th\u00e1ng, <code>t\u1ea1o l\u00fac<\/code> v\u00e0 <code>c\u1eadp nh\u1eadt l\u00fac<\/code> lu\u00f4n lu\u00f4n <code>null<\/code> (kh\u00f4ng \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u trong SQL).<\/p>\r\n\r\n    <h3>Tham s\u1ed1 y\u00eau c\u1ea7u<\/h3>\r\n    <table>\r\n        <thead>\r\n            <tr>\r\n                <th>Tham s\u1ed1<\/th>\r\n                <th>Lo\u1ea1i<\/th>\r\n                <th>B\u1eaft bu\u1ed9c<\/th>\r\n                <th>M\u00f4 t\u1ea3<\/th>\r\n                <th>Gi\u00e1 tr\u1ecb m\u1eb7c \u0111\u1ecbnh<\/th>\r\n            <\/tr>\r\n        <\/thead>\r\n        <tbody>\r\n            <tr>\r\n                <td><code>lang<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>V\u00e2ng<\/td>\r\n                <td>M\u00e3 ng\u00f4n ng\u1eef (v\u00ed d\u1ee5, <code>de<\/code> cho ti\u1ebfng \u0110\u1ee9c <code>fr<\/code> \u0111\u1ed1i v\u1edbi ti\u1ebfng Ph\u00e1p). M\u00e3 ng\u1eafn \u0111\u01b0\u1ee3c chu\u1ea9n h\u00f3a (de \u2192 de_de).<\/td>\r\n                <td>\u2014<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>trang<\/code><\/td>\r\n                <td>s\u1ed1 nguy\u00ean<\/td>\r\n                <td>Kh\u00f4ng<\/td>\r\n                <td>S\u1ed1 trang \u0111\u1ec3 ph\u00e2n trang.<\/td>\r\n                <td>1<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>gi\u1edbi h\u1ea1n<\/code><\/td>\r\n                <td>s\u1ed1 nguy\u00ean<\/td>\r\n                <td>Kh\u00f4ng<\/td>\r\n                <td>S\u1ed1 d\u00f2ng tr\u00ean m\u1ed7i trang (t\u1ed1i thi\u1ec3u 1, t\u1ed1i \u0111a 500).<\/td>\r\n                <td>100<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>c\u1eadp nh\u1eadt t\u1eeb<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>Kh\u00f4ng<\/td>\r\n                <td>B\u1ed9 l\u1ecdc theo ng\u00e0y c\u1eadp nh\u1eadt (ISO8601, v\u00ed d\u1ee5,) <code>2025-10-01T00:00:00Z<\/code>). Ch\u1ec9 tr\u1ea3 v\u1ec1 c\u00e1c d\u00f2ng \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt sau ng\u00e0y n\u00e0y.<\/td>\r\n                <td>\u2014<\/td>\r\n            <\/tr>\r\n        <\/tbody>\r\n    <\/table>\r\n\r\n    <h3>Ti\u00eau \u0111\u1ec1<\/h3>\r\n    <ul>\r\n        <li><code>\u1ee6y quy\u1ec1n: Bearer {\u0442\u043e\u043a\u0435\u043d}<\/code> (b\u1eaft bu\u1ed9c)<\/li>\r\n    <\/ul>\r\n\r\n    <h3>V\u00ed d\u1ee5 v\u1ec1 y\u00eau c\u1ea7u (cURL)<\/h3>\r\n    <pre><code>curl -X GET \"https:\/\/your-site.com\/wp-json\/tp-sync\/v1\/keys?lang=de&amp;page=1&amp;limit=50&amp;updated_since=2025-10-01T00:00:00Z\" \\\n  -H \"Authorization: Bearer your-api-token-here\"<\/code><\/pre>\r\n\r\n    <h3>V\u00ed d\u1ee5 v\u1ec1 ph\u1ea3n h\u1ed3i (JSON)<\/h3>\r\n    <pre><code>{\n  \"keys\": [\n    {\n      \"key_id\": \"dictionary:123\",\n      \"original\": \"Hello World\",\n      \"translated\": \"Xin ch\u00e0o Th\u1ebf gi\u1edbi\",\n      \"status\": 2,\n      \"created_at\": null,\n      \"updated_at\": null\n    },\n    {\n      \"key_id\": \"dictionary:124\",\n      \"original\": \"Welcome\",\n      \"translated\": \"Ch\u00e0o m\u1eebng\",\n      \"status\": 0,\n      \"created_at\": null,\n      \"updated_at\": null\n    }\n  ],\n  \"meta\": {\n    \"total_count\": 150,\n    \"page\": 1,\n    \"limit\": 50,\n    \"page_count\": 3,\n    \"next_page\": \"https:\/\/your-site.com\/wp-json\/tp-sync\/v1\/keys?lang=de&amp;page=2&amp;limit=50&amp;updated_since=2025-10-01T00:00:00Z\"\n  }\n}<\/code><\/pre>\r\n\r\n    <h3>M\u00f4 t\u1ea3 c\u00e1c tr\u01b0\u1eddng trong ph\u1ea3n h\u1ed3i<\/h3>\r\n    <table>\r\n        <thead>\r\n            <tr>\r\n                <th>Tr\u01b0\u1eddng<\/th>\r\n                <th>Lo\u1ea1i<\/th>\r\n                <th>M\u00f4 t\u1ea3<\/th>\r\n            <\/tr>\r\n        <\/thead>\r\n        <tbody>\r\n            <tr>\r\n                <td><code>kh\u00f3a_id<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>ID duy nh\u1ea5t c\u1ee7a d\u00f2ng: <code>t\u1eeb \u0111i\u1ec3n: {id}<\/code> (id \u2014 s\u1ed1 ghi trong b\u1ea3ng <code>wp_trp_dictionary_en_us_{lang}<\/code>).<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>g\u1ed1c<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>V\u0103n b\u1ea3n g\u1ed1c b\u1eb1ng ti\u1ebfng Anh.<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>\u0111\u00e3 d\u1ecbch<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>B\u1ea3n d\u1ecbch hi\u1ec7n t\u1ea1i cho ng\u00f4n ng\u1eef \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh (c\u00f3 th\u1ec3 \u0111\u1ec3 tr\u1ed1ng).<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>tr\u1ea1ng th\u00e1i<\/code><\/td>\r\n                <td>s\u1ed1 nguy\u00ean<\/td>\r\n                <td>Tr\u1ea1ng th\u00e1i: 0 \u2014 ch\u01b0a d\u1ecbch, 1 \u2014 \u0111ang ti\u1ebfn h\u00e0nh, 2 \u2014 \u0111\u00e3 d\u1ecbch.<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>t\u1ea1o l\u00fac<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>Ng\u00e0y t\u1ea1o (ISO8601 <code>null<\/code> \u2014 kh\u00f4ng \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u).<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>c\u1eadp nh\u1eadt l\u00fac<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>Ng\u00e0y c\u1eadp nh\u1eadt cu\u1ed1i c\u00f9ng (ISO8601 <code>null<\/code> \u2014 kh\u00f4ng \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u).<\/td>\r\n            <\/tr>\r\n        <\/tbody>\r\n    <\/table>\r\n\r\n    <h3>Si\u00eau d\u1eef li\u1ec7u<code>meta<\/code>)<\/h3>\r\n    <ul>\r\n        <li><code>total_count<\/code>T\u1ed5ng s\u1ed1 d\u00f2ng (bao g\u1ed3m c\u1ea3 b\u1ed9 l\u1ecdc).<\/li>\r\n        <li><code>trang<\/code>Trang hi\u1ec7n t\u1ea1i.<\/li>\r\n        <li><code>gi\u1edbi h\u1ea1n<\/code>Gi\u1edbi h\u1ea1n tr\u00ean m\u1ed7i trang.<\/li>\r\n        <li><code>s\u1ed1 trang<\/code>T\u1ed5ng s\u1ed1 trang.<\/li>\r\n        <li><code>trang ti\u1ebfp theo<\/code>: URL c\u1ee7a trang ti\u1ebfp theo<code>null<\/code>, n\u1ebfu l\u00e0 c\u00e1i cu\u1ed1i c\u00f9ng).<\/li>\r\n    <\/ul>\r\n\r\n    <h3>L\u1ed7i<\/h3>\r\n    <ul>\r\n        <li>401: Thi\u1ebfu ho\u1eb7c sai ti\u00eau \u0111\u1ec1 Authorization.<\/li>\r\n        <li>403: M\u00e3 th\u00f4ng b\u00e1o kh\u00f4ng h\u1ee3p l\u1ec7.<\/li>\r\n        <li>404: Ng\u00f4n ng\u1eef kh\u00f4ng t\u00ecm th\u1ea5y trong TranslatePress (b\u1ea3ng b\u1ecb thi\u1ebfu).<\/li>\r\n    <\/ul>\r\n<\/div>\r\n\r\n<div class=\"card\">\r\n    <h2>2. C\u1eadp nh\u1eadt b\u1ea3n d\u1ecbch (POST \/translations)<\/h2>\r\n\r\n    <p>\u0110\u1ea7u cu\u1ed1i n\u00e0y c\u1eadp nh\u1eadt b\u1ea3n d\u1ecbch cho nhi\u1ec1u d\u00f2ng c\u00f9ng l\u00fac (theo l\u00f4). Truy\u1ec1n m\u1ed9t m\u1ea3ng c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng v\u1edbi ID d\u00f2ng, ng\u00f4n ng\u1eef v\u00e0 b\u1ea3n d\u1ecbch m\u1edbi. C\u1eadp nh\u1eadt tr\u1ea1ng th\u00e1i th\u00e0nh \"\u0111\u00e3 d\u1ecbch\" (2) v\u00e0 tr\u01b0\u1eddng <code>c\u1eadp nh\u1eadt l\u00fac<\/code>.<\/p>\r\n\r\n    <h3>Th\u00e2n y\u00eau c\u1ea7u (JSON)<\/h3>\r\n    <p>M\u1ea3ng <code>b\u1ea3n d\u1ecbch<\/code> v\u1edbi c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng:<\/p>\r\n    <pre><code>{\n  \"translations\": [\n    {\n      \"key_id\": \"dictionary:123\",\n      \"language_iso\": \"de\",\n      \"translation\": \"Xin ch\u00e0o th\u1ebf gi\u1edbi\"\n    },\n    {\n      \"key_id\": \"dictionary:124\",\n      \"language_iso\": \"de\",\n      \"translation\": \"Ch\u00e0o m\u1eebng\"\n    }\n  ]\n}<\/code><\/pre>\r\n\r\n    <h3>C\u00e0i \u0111\u1eb7t<\/h3>\r\n    <table>\r\n        <thead>\r\n            <tr>\r\n                <th>Tr\u01b0\u1eddng trong \u0111\u1ed1i t\u01b0\u1ee3ng<\/th>\r\n                <th>Lo\u1ea1i<\/th>\r\n                <th>B\u1eaft bu\u1ed9c<\/th>\r\n                <th>M\u00f4 t\u1ea3<\/th>\r\n            <\/tr>\r\n        <\/thead>\r\n        <tbody>\r\n            <tr>\r\n                <td><code>kh\u00f3a_id<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>V\u00e2ng<\/td>\r\n                <td>ID d\u00f2ng: <code>t\u1eeb \u0111i\u1ec3n: {id}<\/code> (t\u1eeb GET \/keys).<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>m\u00e3_iso_ng\u00f4n_ng\u1eef<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>V\u00e2ng<\/td>\r\n                <td>M\u00e3 ng\u00f4n ng\u1eef (de \u2192 de_de, \u0111\u01b0\u1ee3c chu\u1ea9n h\u00f3a t\u1ef1 \u0111\u1ed9ng).<\/td>\r\n            <\/tr>\r\n            <tr>\r\n                <td><code>b\u1ea3n d\u1ecbch<\/code><\/td>\r\n                <td>chu\u1ed7i<\/td>\r\n                <td>V\u00e2ng<\/td>\r\n                <td>V\u0103n b\u1ea3n d\u1ecbch m\u1edbi (gi\u1eef nguy\u00ean nh\u01b0 c\u0169).<\/td>\r\n            <\/tr>\r\n        <\/tbody>\r\n    <\/table>\r\n\r\n    <h3>Ti\u00eau \u0111\u1ec1<\/h3>\r\n    <ul>\r\n        <li><code>\u1ee6y quy\u1ec1n: Bearer {\u0442\u043e\u043a\u0435\u043d}<\/code> (b\u1eaft bu\u1ed9c)<\/li>\r\n        <li><code>Content-Type: application\/json<\/code> (b\u1eaft bu\u1ed9c)<\/li>\r\n    <\/ul>\r\n\r\n    <h3>V\u00ed d\u1ee5 v\u1ec1 y\u00eau c\u1ea7u (cURL)<\/h3>\r\n    <pre><code>curl -X POST \"https:\/\/your-site.com\/wp-json\/tp-sync\/v1\/translations\" \\\n  -H \"Authorization: Bearer your-api-token-here\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"translations\": [\n      {\n        \"key_id\": \"dictionary:123\",\n        \"language_iso\": \"de\",\n        \"translation\": \"Xin ch\u00e0o Th\u1ebf gi\u1edbi\"\n      }\n    ]\n  }'<\/code><\/pre>\r\n\r\n    <h3>V\u00ed d\u1ee5 v\u1ec1 ph\u1ea3n h\u1ed3i (JSON)<\/h3>\r\n    <pre><code>{\n  \"translations\": [\n    {\n      \"key_id\": \"dictionary:123\",\n      \"language_iso\": \"de\",\n      \"translation\": \"Hallo Welt\",\n      \"modified_at\": \"2025-10-15T12:00:00Z\"\n    }\n  ],\n  \"errors\": [\n    {\n      \"index\": 1,\n      \"key_id\": \"dictionary:999\",\n      \"error\": \"Kh\u00f4ng t\u00ecm th\u1ea5y kh\u00f3a trong c\u01a1 s\u1edf d\u1eef li\u1ec7u\"\n    }\n  ]\n}<\/code><\/pre>\r\n\r\n    <h3>M\u00f4 t\u1ea3 c\u00e1c tr\u01b0\u1eddng trong ph\u1ea3n h\u1ed3i<\/h3>\r\n    <ul>\r\n        <li><code>b\u1ea3n d\u1ecbch<\/code>M\u1ea3ng b\u1ea3n d\u1ecbch \u0111\u00e3 c\u1eadp nh\u1eadt th\u00e0nh c\u00f4ng (tr\u1ea3 v\u1ec1 d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o + <code>\u0111\u00e3 s\u1eeda v\u00e0o<\/code> theo \u0111\u1ecbnh d\u1ea1ng ISO8601).<\/li>\r\n        <li><code>l\u1ed7i<\/code> (t\u00f9y ch\u1ecdn, n\u1ebfu c\u00f3 th\u1ea5t b\u1ea1i): M\u1ea3ng l\u1ed7i.\r\n            <ul>\r\n                <li><code>ch\u1ec9 m\u1ee5c<\/code>Ch\u1ec9 s\u1ed1 c\u1ee7a ph\u1ea7n t\u1eed trong m\u1ea3ng g\u1ed1c.<\/li>\r\n                <li><code>kh\u00f3a_id<\/code>: ID d\u00f2ng c\u00f3 v\u1ea5n \u0111\u1ec1 (n\u1ebfu c\u00f3).<\/li>\r\n                <li><code>l\u1ed7i<\/code>V\u0103n b\u1ea3n l\u1ed7i (v\u00ed d\u1ee5: \"Thi\u1ebfu c\u00e1c tr\u01b0\u1eddng b\u1eaft bu\u1ed9c\", \"\u0110\u1ecbnh d\u1ea1ng key_id kh\u00f4ng h\u1ee3p l\u1ec7. Mong \u0111\u1ee3i: dictionary:{id}\", \"Kh\u00f4ng t\u00ecm th\u1ea5y ng\u00f4n ng\u1eef\", \"Kh\u00f4ng t\u00ecm th\u1ea5y kh\u00f3a trong c\u01a1 s\u1edf d\u1eef li\u1ec7u\", \"C\u1eadp nh\u1eadt c\u01a1 s\u1edf d\u1eef li\u1ec7u th\u1ea5t b\u1ea1i\").<\/li>\r\n            <\/ul>\r\n        <\/li>\r\n    <\/ul>\r\n\r\n    <h3>L\u1ed7i<\/h3>\r\n    <ul>\r\n        <li>400: D\u1eef li\u1ec7u kh\u00f4ng h\u1ee3p l\u1ec7 (r\u1ed7ng\/kh\u00f4ng ph\u1ea3i m\u1ea3ng) <code>b\u1ea3n d\u1ecbch<\/code>, thi\u1ebfu tr\u01b0\u1eddng).<\/li>\r\n        <li>401\/403: V\u1ea5n \u0111\u1ec1 v\u1ec1 x\u00e1c th\u1ef1c.<\/li>\r\n        <li>404: Ng\u00f4n ng\u1eef ho\u1eb7c kh\u00f3a kh\u00f4ng t\u00ecm th\u1ea5y (b\u1ea3ng\/b\u1ea3n ghi kh\u00f4ng t\u1ed3n t\u1ea1i).<\/li>\r\n    <\/ul>\r\n<\/div>\r\n\r\n<div class=\"card\">\r\n    <h2>C\u00e1c ng\u00f4n ng\u1eef \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3<\/h2>\r\n    <p>M\u00e3 ng\u1eafn \u0111\u01b0\u1ee3c t\u1ef1 \u0111\u1ed9ng chu\u1ea9n h\u00f3a (d\u1ef1a tr\u00ean \u00e1nh x\u1ea1 trong m\u00e3). \u0110\u1ed1i v\u1edbi nh\u1eefng m\u00e3 kh\u00f4ng x\u00e1c \u0111\u1ecbnh: <code>{code}_{code}<\/code> (v\u00ed d\u1ee5, pl \u2192 pl_pl).<\/p>\r\n    <ul>\r\n        <li>en \u2192 en_us<\/li>\r\n        <li>\u0111\u1ebfn<\/li>\r\n        <li>id \u2192 id_id<\/li>\r\n        <li>ko \u2192 ko_kr<\/li>\r\n        <li>tr \u2192 tr_tr<\/li>\r\n        <li>vi \u2192 vi<\/li>\r\n        <li>ru \u2192 ru_ru<\/li>\r\n        <li>fr \u2192 fr_fr<\/li>\r\n        <li>de \u2192 de_de<\/li>\r\n        <li>n\u00f3<\/li>\r\n        <li>\u0111\u1ebfn<\/li>\r\n        <li>pt \u2192 pt_pt<\/li>\r\n        <li>zh \u2192 zh_cn<\/li>\r\n        <li>es \u2192 es_es<\/li>\r\n    <\/ul>\r\n<\/div>\r\n\r\n<div class=\"card\">\r\n    <h2>L\u1ea5y m\u00e3 th\u00f4ng b\u00e1o<\/h2>\r\n    <ul>\r\n        <li>Trong qu\u1ea3n tr\u1ecb WordPress: Menu <strong>\u0110\u1ed3ng b\u1ed9 TP<\/strong> \u2192 N\u00fat \"Generate New Token\" (m\u00e3 th\u00f4ng b\u00e1o 32 k\u00fd t\u1ef1, \u0111\u01b0\u1ee3c t\u1ea1o t\u1ef1 \u0111\u1ed9ng khi ch\u1ea1y l\u1ea7n \u0111\u1ea7u).<\/li>\r\n        <li>Token \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong t\u00f9y ch\u1ecdn <code>token_api_\u0111\u1ed3ng_b\u1ed9_tp<\/code>.<\/li>\r\n    <\/ul>\r\n\r\n<\/div>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>T\u00e0i li\u1ec7u API t\u00edch h\u1ee3p d\u1ecbch TranslatePress (TP Sync API) T\u00e0i li\u1ec7u API t\u00edch h\u1ee3p d\u1ecbch TranslatePress (TP Sync API) API n\u00e0y cung c\u1ea5p hai \u0111i\u1ec3m cu\u1ed1i \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi c\u00e1c chu\u1ed7i d\u1ecbch trong plugin TranslatePress. Ng\u00f4n ng\u1eef c\u01a1 b\u1ea3n l\u00e0 ti\u1ebfng Anh (en_us). T\u1ea5t c\u1ea3 c\u00e1c y\u00eau c\u1ea7u \u0111\u1ec1u y\u00eau c\u1ea7u x\u00e1c th\u1ef1c qua Bearer token (l\u1ea5y trong qu\u1ea3n tr\u1ecb WordPress d\u01b0\u1edbi menu \u201cTP Sync\u201d). URL c\u01a1 s\u1edf: https:\/\/your-site.com\/wp-json\/tp-sync\/v1\/ 1. L\u1ea5y [&hellip;]<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-22161","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>tp-sync-api - Mapsly<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mapsly.com\/vi\/tp-sync-api\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"tp-sync-api - Mapsly\" \/>\n<meta property=\"og:description\" content=\"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f API \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 TranslatePress (TP Sync API) \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f API \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 TranslatePress (TP Sync API) \u042d\u0442\u043e\u0442 API \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u0430 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 TranslatePress. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u2014 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 (en_us). \u0412\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 Bearer-\u0442\u043e\u043a\u0435\u043d (\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 WordPress \u043f\u043e\u0434 \u043c\u0435\u043d\u044e &#8220;TP Sync&#8221;). \u0411\u0430\u0437\u043e\u0432\u044b\u0439 URL: https:\/\/your-site.com\/wp-json\/tp-sync\/v1\/ 1. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mapsly.com\/vi\/tp-sync-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Mapsly\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-15T11:09:03+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/mapsly.com\/tp-sync-api\/\",\"url\":\"https:\/\/mapsly.com\/tp-sync-api\/\",\"name\":\"tp-sync-api - Mapsly\",\"isPartOf\":{\"@id\":\"https:\/\/mapsly.com\/#website\"},\"datePublished\":\"2025-10-15T11:08:18+00:00\",\"dateModified\":\"2025-10-15T11:09:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/mapsly.com\/tp-sync-api\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/mapsly.com\/tp-sync-api\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/mapsly.com\/tp-sync-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/mapsly.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"tp-sync-api\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/mapsly.com\/#website\",\"url\":\"https:\/\/mapsly.com\/\",\"name\":\"Mapsly\",\"description\":\"The Ultimate CRM Map\",\"publisher\":{\"@id\":\"https:\/\/mapsly.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/mapsly.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/mapsly.com\/#organization\",\"name\":\"Mapsly\",\"url\":\"https:\/\/mapsly.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/mapsly.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/mapsly.com\/wp-content\/uploads\/2025\/06\/Mapsly-Logo-2x-BIG.png\",\"contentUrl\":\"https:\/\/mapsly.com\/wp-content\/uploads\/2025\/06\/Mapsly-Logo-2x-BIG.png\",\"width\":280,\"height\":85,\"caption\":\"Mapsly\"},\"image\":{\"@id\":\"https:\/\/mapsly.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"tp-sync-api - Mapsly","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mapsly.com\/vi\/tp-sync-api\/","og_locale":"vi_VN","og_type":"article","og_title":"tp-sync-api - Mapsly","og_description":"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f API \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 TranslatePress (TP Sync API) \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f API \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 TranslatePress (TP Sync API) \u042d\u0442\u043e\u0442 API \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u0430 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 TranslatePress. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u2014 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 (en_us). \u0412\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 Bearer-\u0442\u043e\u043a\u0435\u043d (\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 WordPress \u043f\u043e\u0434 \u043c\u0435\u043d\u044e &#8220;TP Sync&#8221;). \u0411\u0430\u0437\u043e\u0432\u044b\u0439 URL: https:\/\/your-site.com\/wp-json\/tp-sync\/v1\/ 1. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 [&hellip;]","og_url":"https:\/\/mapsly.com\/vi\/tp-sync-api\/","og_site_name":"Mapsly","article_modified_time":"2025-10-15T11:09:03+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"3 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/mapsly.com\/tp-sync-api\/","url":"https:\/\/mapsly.com\/tp-sync-api\/","name":"tp-sync-api - Mapsly","isPartOf":{"@id":"https:\/\/mapsly.com\/#website"},"datePublished":"2025-10-15T11:08:18+00:00","dateModified":"2025-10-15T11:09:03+00:00","breadcrumb":{"@id":"https:\/\/mapsly.com\/tp-sync-api\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mapsly.com\/tp-sync-api\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/mapsly.com\/tp-sync-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/mapsly.com\/"},{"@type":"ListItem","position":2,"name":"tp-sync-api"}]},{"@type":"WebSite","@id":"https:\/\/mapsly.com\/#website","url":"https:\/\/mapsly.com\/","name":"Mapsly","description":"B\u1ea3n \u0111\u1ed3 CRM t\u1ed1i \u01b0u","publisher":{"@id":"https:\/\/mapsly.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mapsly.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/mapsly.com\/#organization","name":"Mapsly","url":"https:\/\/mapsly.com\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/mapsly.com\/#\/schema\/logo\/image\/","url":"https:\/\/mapsly.com\/wp-content\/uploads\/2025\/06\/Mapsly-Logo-2x-BIG.png","contentUrl":"https:\/\/mapsly.com\/wp-content\/uploads\/2025\/06\/Mapsly-Logo-2x-BIG.png","width":280,"height":85,"caption":"Mapsly"},"image":{"@id":"https:\/\/mapsly.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/mapsly.com\/vi\/wp-json\/wp\/v2\/pages\/22161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mapsly.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mapsly.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mapsly.com\/vi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mapsly.com\/vi\/wp-json\/wp\/v2\/comments?post=22161"}],"version-history":[{"count":7,"href":"https:\/\/mapsly.com\/vi\/wp-json\/wp\/v2\/pages\/22161\/revisions"}],"predecessor-version":[{"id":22168,"href":"https:\/\/mapsly.com\/vi\/wp-json\/wp\/v2\/pages\/22161\/revisions\/22168"}],"wp:attachment":[{"href":"https:\/\/mapsly.com\/vi\/wp-json\/wp\/v2\/media?parent=22161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}