{"id":4304,"date":"2024-10-29T10:32:05","date_gmt":"2024-10-29T02:32:05","guid":{"rendered":"https:\/\/www.openbyt.com\/?p=4304"},"modified":"2024-10-29T10:33:14","modified_gmt":"2024-10-29T02:33:14","slug":"how-to-enable-multilingual-support-for-rest-api-endpoints-with-wordpress-rest_api_init","status":"publish","type":"post","link":"https:\/\/www.openbyt.com\/pt\/como-ativar-o-suporte-multilingue-para-pontos-finais-da-api-rest-com-o-wordpress-rest_api_init","title":{"rendered":"Como habilitar o suporte multil\u00edngue para pontos de extremidade da API REST com o rest_api_init do WordPress"},"content":{"rendered":"<p>Se alguma vez tentou tornar os seus pontos de extremidade da API REST do WordPress multilingues e se deparou com problemas de \"rest_api_init not working\", n\u00e3o est\u00e1 sozinho. A implementa\u00e7\u00e3o do suporte multilingue pode ser um desafio, especialmente quando envolve a personaliza\u00e7\u00e3o de funcionalidades essenciais como a API REST. Neste artigo, vamos explorar em profundidade como usar o <code>rest_api_init<\/code> hook de forma eficaz para criar pontos finais da API REST que suportam v\u00e1rios idiomas.<\/p><figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.09.37-An-illustration-of-a-WordPress-REST-API-process-showing-multilingual-support-integration.-The-diagram-should-include-the-rest_api_init-hook-endpoi.webp\" alt=\"\" class=\"wp-image-4305\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.09.37-An-illustration-of-a-WordPress-REST-API-process-showing-multilingual-support-integration.-The-diagram-should-include-the-rest_api_init-hook-endpoi.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.09.37-An-illustration-of-a-WordPress-REST-API-process-showing-multilingual-support-integration.-The-diagram-should-include-the-rest_api_init-hook-endpoi-600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.09.37-An-illustration-of-a-WordPress-REST-API-process-showing-multilingual-support-integration.-The-diagram-should-include-the-rest_api_init-hook-endpoi-100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.09.37-An-illustration-of-a-WordPress-REST-API-process-showing-multilingual-support-integration.-The-diagram-should-include-the-rest_api_init-hook-endpoi-300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.09.37-An-illustration-of-a-WordPress-REST-API-process-showing-multilingual-support-integration.-The-diagram-should-include-the-rest_api_init-hook-endpoi-150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.09.37-An-illustration-of-a-WordPress-REST-API-process-showing-multilingual-support-integration.-The-diagram-should-include-the-rest_api_init-hook-endpoi-768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.09.37-An-illustration-of-a-WordPress-REST-API-process-showing-multilingual-support-integration.-The-diagram-should-include-the-rest_api_init-hook-endpoi-12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.09.37-An-illustration-of-a-WordPress-REST-API-process-showing-multilingual-support-integration.-The-diagram-should-include-the-rest_api_init-hook-endpoi-96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><h3 class=\"wp-block-heading\">Compreender o rest_api_init e as armadilhas comuns<\/h3><p>O <code>rest_api_init<\/code> hook \u00e9 uma parte essencial da extens\u00e3o das APIs REST do WordPress. Ele permite que os desenvolvedores registrem rotas e pontos de extremidade personalizados para atender \u00e0s necessidades de seus projetos. No entanto, muitos desenvolvedores encontram o temido cen\u00e1rio \"rest_api_init not working\", que geralmente acontece devido a configura\u00e7\u00f5es incorretas, conflitos de plugins ou coloca\u00e7\u00e3o incorreta de hooks.<\/p><p>Para utilizar com \u00eaxito <code>rest_api_init<\/code> para suporte multilingue, \u00e9 crucial compreender como registar corretamente as rotas, lidar com a tradu\u00e7\u00e3o e depurar problemas comuns. Antes de mergulhar na implementa\u00e7\u00e3o, certifique-se de que o seu ambiente est\u00e1 configurado corretamente: confirme que todos os plug-ins est\u00e3o actualizados e que n\u00e3o existem outros hooks a substituir os seus pontos finais.<\/p><figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.37-An-educational-diagram-titled-Understanding-rest_api_init-and-Common-Pitfalls.-The-diagram-should-illustrate-the-process-of-using-the-rest_api_init.webp\" alt=\"\" class=\"wp-image-4306\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.37-An-educational-diagram-titled-Understanding-rest_api_init-and-Common-Pitfalls.-The-diagram-should-illustrate-the-process-of-using-the-rest_api_init.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.37-An-educational-diagram-titled-Understanding-rest_api_init-and-Common-Pitfalls.-The-diagram-should-illustrate-the-process-of-using-the-rest_api_init-600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.37-An-educational-diagram-titled-Understanding-rest_api_init-and-Common-Pitfalls.-The-diagram-should-illustrate-the-process-of-using-the-rest_api_init-100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.37-An-educational-diagram-titled-Understanding-rest_api_init-and-Common-Pitfalls.-The-diagram-should-illustrate-the-process-of-using-the-rest_api_init-300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.37-An-educational-diagram-titled-Understanding-rest_api_init-and-Common-Pitfalls.-The-diagram-should-illustrate-the-process-of-using-the-rest_api_init-150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.37-An-educational-diagram-titled-Understanding-rest_api_init-and-Common-Pitfalls.-The-diagram-should-illustrate-the-process-of-using-the-rest_api_init-768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.37-An-educational-diagram-titled-Understanding-rest_api_init-and-Common-Pitfalls.-The-diagram-should-illustrate-the-process-of-using-the-rest_api_init-12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.37-An-educational-diagram-titled-Understanding-rest_api_init-and-Common-Pitfalls.-The-diagram-should-illustrate-the-process-of-using-the-rest_api_init-96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><h3 class=\"wp-block-heading\">Guia passo a passo para a implementa\u00e7\u00e3o de terminais multilingues<\/h3><h4 class=\"wp-block-heading\">1. Registar pontos finais personalizados com rest_api_init<\/h4><p>Para come\u00e7ar, utilize o <code>rest_api_init<\/code> para registar rotas personalizadas para a sua API. Coloque este c\u00f3digo na sec\u00e7\u00e3o <code>fun\u00e7\u00f5es.php<\/code> ou num plugin personalizado:<\/p><pre class=\"wp-block-code\"><code>add_action('rest_api_init', 'register_multilingual_api_routes');\n\nfun\u00e7\u00e3o register_multilingual_api_routes() {\n    register_rest_route('myplugin\/v1', '\/content\/', array(\n        'methods' =&gt; 'GET',\n        'callback' =&gt; 'get_multilingual_content',\n        'permission_callback' =&gt; '__return_true', \/\/ Adicione permiss\u00e3o de retorno de chamada para garantir a seguran\u00e7a\n    ));\n}<\/code><\/pre><p>Este c\u00f3digo cria um ponto de extremidade personalizado da API REST em <code>\/wp-json\/myplugin\/v1\/content\/<\/code>. O <code>retorno_de_permiss\u00e3o<\/code> O par\u00e2metro \u00e9 importante para garantir que os utilizadores n\u00e3o autorizados n\u00e3o acedem a dados sens\u00edveis. Agora, precisamos de o tornar multilingue.<\/p><figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.48-A-step-by-step-guide-diagram-titled-Implementing-Multilingual-Endpoints-in-WordPress.-The-diagram-should-illustrate-registering-custom-endpoints-usi.webp\" alt=\"\" class=\"wp-image-4307\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.48-A-step-by-step-guide-diagram-titled-Implementing-Multilingual-Endpoints-in-WordPress.-The-diagram-should-illustrate-registering-custom-endpoints-usi.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.48-A-step-by-step-guide-diagram-titled-Implementing-Multilingual-Endpoints-in-WordPress.-The-diagram-should-illustrate-registering-custom-endpoints-usi-600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.48-A-step-by-step-guide-diagram-titled-Implementing-Multilingual-Endpoints-in-WordPress.-The-diagram-should-illustrate-registering-custom-endpoints-usi-100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.48-A-step-by-step-guide-diagram-titled-Implementing-Multilingual-Endpoints-in-WordPress.-The-diagram-should-illustrate-registering-custom-endpoints-usi-300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.48-A-step-by-step-guide-diagram-titled-Implementing-Multilingual-Endpoints-in-WordPress.-The-diagram-should-illustrate-registering-custom-endpoints-usi-150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.48-A-step-by-step-guide-diagram-titled-Implementing-Multilingual-Endpoints-in-WordPress.-The-diagram-should-illustrate-registering-custom-endpoints-usi-768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.48-A-step-by-step-guide-diagram-titled-Implementing-Multilingual-Endpoints-in-WordPress.-The-diagram-should-illustrate-registering-custom-endpoints-usi-12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.11.48-A-step-by-step-guide-diagram-titled-Implementing-Multilingual-Endpoints-in-WordPress.-The-diagram-should-illustrate-registering-custom-endpoints-usi-96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><h4 class=\"wp-block-heading\">2. Adicionar par\u00e2metros de idioma<\/h4><p>Para tornar a API multilingue, precisamos de adicionar um par\u00e2metro de idioma \u00e0 rota. Pode modificar o retorno de chamada para aceitar argumentos de idioma como este:<\/p><pre class=\"wp-block-code\"><code>fun\u00e7\u00e3o get_multilingual_content($request) {\n    $language = $request-&gt;get_param('lang');\n    \n    se (!$language) {\n        return new WP_Error('no_language', 'Language parameter is required', array('status' =&gt; 400));\n    }\n    \n    \/\/ Obtenha conte\u00fado com base no par\u00e2metro de idioma\n    $content = get_content_by_language($language);\n    \n    Se (empty($content)) {\n        return new WP_Error('no_content', 'N\u00e3o foi encontrado conte\u00fado para o idioma especificado', array('status' =&gt; 404));\n    }\n    \n    return rest_ensure_response($content);\n}<\/code><\/pre><p>Esta implementa\u00e7\u00e3o garante que um par\u00e2metro de l\u00edngua (<code>tocar<\/code>) \u00e9 necess\u00e1rio, e devolve o conte\u00fado espec\u00edfico da l\u00edngua em conformidade. Este m\u00e9todo aumenta a flexibilidade da sua API ao permitir que os utilizadores especifiquem o idioma diretamente.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.14.01-An-educational-diagram-titled-Adding-Language-Parameters-to-WordPress-REST-API.-The-diagram-should-show-how-to-add-a-language-parameter-to-a-custom-.webp\" alt=\"\" class=\"wp-image-4308\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.14.01-An-educational-diagram-titled-Adding-Language-Parameters-to-WordPress-REST-API.-The-diagram-should-show-how-to-add-a-language-parameter-to-a-custom-.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.14.01-An-educational-diagram-titled-Adding-Language-Parameters-to-WordPress-REST-API.-The-diagram-should-show-how-to-add-a-language-parameter-to-a-custom--600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.14.01-An-educational-diagram-titled-Adding-Language-Parameters-to-WordPress-REST-API.-The-diagram-should-show-how-to-add-a-language-parameter-to-a-custom--100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.14.01-An-educational-diagram-titled-Adding-Language-Parameters-to-WordPress-REST-API.-The-diagram-should-show-how-to-add-a-language-parameter-to-a-custom--300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.14.01-An-educational-diagram-titled-Adding-Language-Parameters-to-WordPress-REST-API.-The-diagram-should-show-how-to-add-a-language-parameter-to-a-custom--150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.14.01-An-educational-diagram-titled-Adding-Language-Parameters-to-WordPress-REST-API.-The-diagram-should-show-how-to-add-a-language-parameter-to-a-custom--768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.14.01-An-educational-diagram-titled-Adding-Language-Parameters-to-WordPress-REST-API.-The-diagram-should-show-how-to-add-a-language-parameter-to-a-custom--12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.14.01-An-educational-diagram-titled-Adding-Language-Parameters-to-WordPress-REST-API.-The-diagram-should-show-how-to-add-a-language-parameter-to-a-custom--96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><h4 class=\"wp-block-heading\">3. Lidar com conte\u00fados multilingues no WordPress<\/h4><p>Para servir efetivamente conte\u00fados multilingues, precisa de armazenar e recuperar os dados corretamente. Pode utilizar plugins como o WPML ou o Polylang para gerir as tradu\u00e7\u00f5es. Na sec\u00e7\u00e3o <code>get_content_by_language<\/code> aproveite estes plugins para ir buscar a tradu\u00e7\u00e3o correta com base na fun\u00e7\u00e3o <code>tocar<\/code> par\u00e2metro.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.15.41-An-educational-diagram-titled-Handling-Multilingual-Content-in-WordPress.-The-diagram-should-illustrate-how-to-manage-multilingual-content-using-plu.webp\" alt=\"\" class=\"wp-image-4309\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.15.41-An-educational-diagram-titled-Handling-Multilingual-Content-in-WordPress.-The-diagram-should-illustrate-how-to-manage-multilingual-content-using-plu.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.15.41-An-educational-diagram-titled-Handling-Multilingual-Content-in-WordPress.-The-diagram-should-illustrate-how-to-manage-multilingual-content-using-plu-600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.15.41-An-educational-diagram-titled-Handling-Multilingual-Content-in-WordPress.-The-diagram-should-illustrate-how-to-manage-multilingual-content-using-plu-100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.15.41-An-educational-diagram-titled-Handling-Multilingual-Content-in-WordPress.-The-diagram-should-illustrate-how-to-manage-multilingual-content-using-plu-300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.15.41-An-educational-diagram-titled-Handling-Multilingual-Content-in-WordPress.-The-diagram-should-illustrate-how-to-manage-multilingual-content-using-plu-150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.15.41-An-educational-diagram-titled-Handling-Multilingual-Content-in-WordPress.-The-diagram-should-illustrate-how-to-manage-multilingual-content-using-plu-768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.15.41-An-educational-diagram-titled-Handling-Multilingual-Content-in-WordPress.-The-diagram-should-illustrate-how-to-manage-multilingual-content-using-plu-12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.15.41-An-educational-diagram-titled-Handling-Multilingual-Content-in-WordPress.-The-diagram-should-illustrate-how-to-manage-multilingual-content-using-plu-96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>Por exemplo:<\/p><pre class=\"wp-block-code\"><code>fun\u00e7\u00e3o get_content_by_language($language) {\n    \/\/ Assuma que o WPML est\u00e1 a ser utilizado\n    global $sitepress;\n    $sitepress-&gt;switch_lang($language);\n    \n    \/\/ Consulte o conte\u00fado traduzido\n    $args = array(\n        'post_type' =&gt; 'post',\n        'posts_per_page' =&gt; 5\n    );\n    \n    $query = new WP_Query($args);\n    Retorne $query-&gt;posts;\n}<\/code><\/pre><p>Este exemplo usa a fun\u00e7\u00e3o <code>switch_lang<\/code> para definir o contexto lingu\u00edstico antes de executar a consulta, garantindo que o conte\u00fado devolvido corresponde ao idioma especificado. Pode adaptar este m\u00e9todo com base no plugin ou na abordagem de tradu\u00e7\u00e3o que est\u00e1 a utilizar.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.16.30-An-educational-diagram-titled-Using-WPMLs-switch_lang-Method-for-Multilingual-Content.-The-diagram-should-show-how-to-use-WPMLs-switch_lang-meth.webp\" alt=\"\" class=\"wp-image-4310\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.16.30-An-educational-diagram-titled-Using-WPMLs-switch_lang-Method-for-Multilingual-Content.-The-diagram-should-show-how-to-use-WPMLs-switch_lang-meth.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.16.30-An-educational-diagram-titled-Using-WPMLs-switch_lang-Method-for-Multilingual-Content.-The-diagram-should-show-how-to-use-WPMLs-switch_lang-meth-600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.16.30-An-educational-diagram-titled-Using-WPMLs-switch_lang-Method-for-Multilingual-Content.-The-diagram-should-show-how-to-use-WPMLs-switch_lang-meth-100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.16.30-An-educational-diagram-titled-Using-WPMLs-switch_lang-Method-for-Multilingual-Content.-The-diagram-should-show-how-to-use-WPMLs-switch_lang-meth-300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.16.30-An-educational-diagram-titled-Using-WPMLs-switch_lang-Method-for-Multilingual-Content.-The-diagram-should-show-how-to-use-WPMLs-switch_lang-meth-150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.16.30-An-educational-diagram-titled-Using-WPMLs-switch_lang-Method-for-Multilingual-Content.-The-diagram-should-show-how-to-use-WPMLs-switch_lang-meth-768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.16.30-An-educational-diagram-titled-Using-WPMLs-switch_lang-Method-for-Multilingual-Content.-The-diagram-should-show-how-to-use-WPMLs-switch_lang-meth-12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.16.30-An-educational-diagram-titled-Using-WPMLs-switch_lang-Method-for-Multilingual-Content.-The-diagram-should-show-how-to-use-WPMLs-switch_lang-meth-96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><h3 class=\"wp-block-heading\">T\u00e9cnicas avan\u00e7adas para APIs REST multilingues<\/h3><h4 class=\"wp-block-heading\">1. Armazenamento em cache para desempenho<\/h4><p>O tratamento din\u00e2mico de conte\u00fados multilingues pode levar a problemas de desempenho, especialmente se o seu site tiver muito tr\u00e1fego. \u00c9 altamente recomend\u00e1vel implementar o armazenamento em cache para as suas respostas da API REST. Pode usar plug-ins como o WP REST Cache para armazenar respostas da API ou utilizar um mecanismo de cache personalizado para evitar a consulta repetida de conte\u00fado traduzido.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.17.19-An-educational-diagram-titled-Caching-for-Performance-in-WordPress-REST-API.-The-diagram-should-show-how-to-implement-caching-for-multilingual-REST-.webp\" alt=\"\" class=\"wp-image-4311\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.17.19-An-educational-diagram-titled-Caching-for-Performance-in-WordPress-REST-API.-The-diagram-should-show-how-to-implement-caching-for-multilingual-REST-.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.17.19-An-educational-diagram-titled-Caching-for-Performance-in-WordPress-REST-API.-The-diagram-should-show-how-to-implement-caching-for-multilingual-REST--600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.17.19-An-educational-diagram-titled-Caching-for-Performance-in-WordPress-REST-API.-The-diagram-should-show-how-to-implement-caching-for-multilingual-REST--100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.17.19-An-educational-diagram-titled-Caching-for-Performance-in-WordPress-REST-API.-The-diagram-should-show-how-to-implement-caching-for-multilingual-REST--300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.17.19-An-educational-diagram-titled-Caching-for-Performance-in-WordPress-REST-API.-The-diagram-should-show-how-to-implement-caching-for-multilingual-REST--150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.17.19-An-educational-diagram-titled-Caching-for-Performance-in-WordPress-REST-API.-The-diagram-should-show-how-to-implement-caching-for-multilingual-REST--768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.17.19-An-educational-diagram-titled-Caching-for-Performance-in-WordPress-REST-API.-The-diagram-should-show-how-to-implement-caching-for-multilingual-REST--12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.17.19-An-educational-diagram-titled-Caching-for-Performance-in-WordPress-REST-API.-The-diagram-should-show-how-to-implement-caching-for-multilingual-REST--96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>Por exemplo, pode aproveitar a API transit\u00f3ria do WordPress para armazenar a resposta em cache:<\/p><pre class=\"wp-block-code\"><code>fun\u00e7\u00e3o get_multilingual_content($request) {\n    $language = $request-&gt;get_param('lang');\n    $cache_key = 'multilingual_content_' . $language;\n    $cached_content = get_transient($cache_key);\n    \n    se ($cached_content) {\n        return rest_ensure_response($cached_content);\n    }\n    \n    \/\/ Obtenha conte\u00fado com base no par\u00e2metro de idioma\n    $content = get_content_by_language($language);\n    \n    Se (empty($content)) {\n        return new WP_Error('no_content', 'N\u00e3o foi encontrado conte\u00fado para o idioma especificado', array('status' =&gt; 404));\n    }\n    \n    \/\/ Armazene o conte\u00fado na cache transit\u00f3ria durante 12 horas\n    set_transient($cache_key, $content, 12 * HOUR_IN_SECONDS);\n    \n    return rest_ensure_response($content);\n}<\/code><\/pre><p>Isto garante que apenas as l\u00ednguas v\u00e1lidas s\u00e3o processadas, melhorando a seguran\u00e7a e a facilidade de utiliza\u00e7\u00e3o.<\/p><h4 class=\"wp-block-heading\">3. Estrutura\u00e7\u00e3o da resposta para localiza\u00e7\u00e3o<\/h4><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.18.22-An-educational-diagram-titled-Structuring-the-Response-for-Localization-in-WordPress-REST-API.-The-diagram-should-show-how-to-structure-a-multilingu.webp\" alt=\"\" class=\"wp-image-4312\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.18.22-An-educational-diagram-titled-Structuring-the-Response-for-Localization-in-WordPress-REST-API.-The-diagram-should-show-how-to-structure-a-multilingu.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.18.22-An-educational-diagram-titled-Structuring-the-Response-for-Localization-in-WordPress-REST-API.-The-diagram-should-show-how-to-structure-a-multilingu-600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.18.22-An-educational-diagram-titled-Structuring-the-Response-for-Localization-in-WordPress-REST-API.-The-diagram-should-show-how-to-structure-a-multilingu-100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.18.22-An-educational-diagram-titled-Structuring-the-Response-for-Localization-in-WordPress-REST-API.-The-diagram-should-show-how-to-structure-a-multilingu-300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.18.22-An-educational-diagram-titled-Structuring-the-Response-for-Localization-in-WordPress-REST-API.-The-diagram-should-show-how-to-structure-a-multilingu-150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.18.22-An-educational-diagram-titled-Structuring-the-Response-for-Localization-in-WordPress-REST-API.-The-diagram-should-show-how-to-structure-a-multilingu-768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.18.22-An-educational-diagram-titled-Structuring-the-Response-for-Localization-in-WordPress-REST-API.-The-diagram-should-show-how-to-structure-a-multilingu-12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.18.22-An-educational-diagram-titled-Structuring-the-Response-for-Localization-in-WordPress-REST-API.-The-diagram-should-show-how-to-structure-a-multilingu-96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>Considere estruturar a resposta da sua API para incluir metadados sobre o idioma e quaisquer outras informa\u00e7\u00f5es relevantes, o que pode ser particularmente \u00fatil para aplica\u00e7\u00f5es front-end que consumam a sua API.<\/p><pre class=\"wp-block-code\"><code>fun\u00e7\u00e3o get_multilingual_content($request) {\n    $language = $request-&gt;get_param('lang');\n    $content = get_content_by_language($language);\n    \n    se (empty($content)) {\n        return new WP_Error('no_content', 'N\u00e3o foi encontrado conte\u00fado para a l\u00edngua especificada', array('status' =&gt; 404));\n    }\n    \n    $response = array(\n        'language' =&gt; $language,\n        'content' =&gt; $content,\n        'timestamp' =&gt; current_time('mysql'),\n        'status' =&gt; 'success'\n    );\n    \n    return rest_ensure_response($response);\n}<\/code><\/pre><p>A adi\u00e7\u00e3o de metadados como o idioma, o carimbo de data\/hora e o estado ajuda os consumidores da API (como as estruturas de front-end JavaScript) a compreender o contexto dos dados.<\/p><h3 class=\"wp-block-heading\">Integra\u00e7\u00e3o de plugins para suporte multilingue<\/h3><h4 class=\"wp-block-heading\">Integra\u00e7\u00e3o WPML e Polylang<\/h4><p>Se estiver usando o WPML ou o Polylang, integr\u00e1-los \u00e0 sua API REST pode simplificar o manuseio de conte\u00fado multil\u00edngue. Veja como pode usar o WPML de forma eficaz com sua API personalizada:<\/p><ul class=\"wp-block-list\"><li><strong>Integra\u00e7\u00e3o WPML:<\/strong> Utilize o <code>wpml_object_id_filter<\/code> para obter vers\u00f5es traduzidas de mensagens personalizadas. Por exemplo:<\/li><\/ul><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.19.49-An-educational-diagram-titled-Multilingual-REST-API-Response-Structure-in-WordPress.-The-diagram-should-show-how-to-create-a-structured-API-response.webp\" alt=\"\" class=\"wp-image-4313\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.19.49-An-educational-diagram-titled-Multilingual-REST-API-Response-Structure-in-WordPress.-The-diagram-should-show-how-to-create-a-structured-API-response.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.19.49-An-educational-diagram-titled-Multilingual-REST-API-Response-Structure-in-WordPress.-The-diagram-should-show-how-to-create-a-structured-API-response-600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.19.49-An-educational-diagram-titled-Multilingual-REST-API-Response-Structure-in-WordPress.-The-diagram-should-show-how-to-create-a-structured-API-response-100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.19.49-An-educational-diagram-titled-Multilingual-REST-API-Response-Structure-in-WordPress.-The-diagram-should-show-how-to-create-a-structured-API-response-300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.19.49-An-educational-diagram-titled-Multilingual-REST-API-Response-Structure-in-WordPress.-The-diagram-should-show-how-to-create-a-structured-API-response-150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.19.49-An-educational-diagram-titled-Multilingual-REST-API-Response-Structure-in-WordPress.-The-diagram-should-show-how-to-create-a-structured-API-response-768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.19.49-An-educational-diagram-titled-Multilingual-REST-API-Response-Structure-in-WordPress.-The-diagram-should-show-how-to-create-a-structured-API-response-12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.19.49-An-educational-diagram-titled-Multilingual-REST-API-Response-Structure-in-WordPress.-The-diagram-should-show-how-to-create-a-structured-API-response-96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><pre class=\"wp-block-code\"><code>fun\u00e7\u00e3o get_content_by_language($language) {\n    global $sitepress;\n    $sitepress-&gt;switch_lang($language);\n    \n    $args = array(\n        'post_type' =&gt; 'post',\n        'posts_per_page' =&gt; 5\n    );\n    \n    $query = new WP_Query($args);\n    $posts = array();\n    \n    foreach ($query-&gt;posts as $post) {\n        $translated_id = apply_filters('wpml_object_id', $post-&gt;ID, 'post', true, $language);\n        se ($translated_id) {\n            $posts[] = get_post($translated_id);\n        }\n    }\n    \n    return $posts;\n}<\/code><\/pre><p><strong>Integra\u00e7\u00e3o do Polylang:<\/strong> Utilize a API da Polylang para obter conte\u00fados na l\u00edngua pretendida:<\/p><pre class=\"wp-block-code\"><code>fun\u00e7\u00e3o get_content_by_language($language) {\n    pll_set_language($language);\n    \n    $args = array(\n        'post_type' =&gt; 'post',\n        'posts_per_page' =&gt; 5\n    );\n    \n    $query = new WP_Query($args);\n    Retorne $query-&gt;posts;\n}<\/code><\/pre><p>Estas integra\u00e7\u00f5es garantem que o seu conte\u00fado \u00e9 corretamente traduzido e apresentado com base no idioma solicitado.<\/p><h3 class=\"wp-block-heading\">Resolu\u00e7\u00e3o de problemas de rest_api_init que n\u00e3o funciona<\/h3><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.22.13-An-educational-diagram-titled-Troubleshooting-rest_api_init-Not-Working-in-WordPress.-The-diagram-should-illustrate-troubleshooting-steps-for-fixing.webp\" alt=\"\" class=\"wp-image-4314\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.22.13-An-educational-diagram-titled-Troubleshooting-rest_api_init-Not-Working-in-WordPress.-The-diagram-should-illustrate-troubleshooting-steps-for-fixing.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.22.13-An-educational-diagram-titled-Troubleshooting-rest_api_init-Not-Working-in-WordPress.-The-diagram-should-illustrate-troubleshooting-steps-for-fixing-600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.22.13-An-educational-diagram-titled-Troubleshooting-rest_api_init-Not-Working-in-WordPress.-The-diagram-should-illustrate-troubleshooting-steps-for-fixing-100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.22.13-An-educational-diagram-titled-Troubleshooting-rest_api_init-Not-Working-in-WordPress.-The-diagram-should-illustrate-troubleshooting-steps-for-fixing-300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.22.13-An-educational-diagram-titled-Troubleshooting-rest_api_init-Not-Working-in-WordPress.-The-diagram-should-illustrate-troubleshooting-steps-for-fixing-150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.22.13-An-educational-diagram-titled-Troubleshooting-rest_api_init-Not-Working-in-WordPress.-The-diagram-should-illustrate-troubleshooting-steps-for-fixing-768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.22.13-An-educational-diagram-titled-Troubleshooting-rest_api_init-Not-Working-in-WordPress.-The-diagram-should-illustrate-troubleshooting-steps-for-fixing-12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.22.13-An-educational-diagram-titled-Troubleshooting-rest_api_init-Not-Working-in-WordPress.-The-diagram-should-illustrate-troubleshooting-steps-for-fixing-96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>Se achar que <code>rest_api_init<\/code> n\u00e3o estiver a funcionar como esperado, considere as seguintes solu\u00e7\u00f5es detalhadas:<\/p><ul class=\"wp-block-list\"><li><strong>Verifique se h\u00e1 plug-ins conflitantes:<\/strong> Os plug-ins que tamb\u00e9m interagem com a API REST podem criar conflitos. Desactive os plug-ins um a um para identificar o culpado. Tamb\u00e9m \u00e9 \u00fatil rever a documenta\u00e7\u00e3o de cada plug-in para ver se eles modificam ou restringem a API REST.<\/li>\n\n<li><strong>Active as ferramentas de depura\u00e7\u00e3o:<\/strong> Active a depura\u00e7\u00e3o no WordPress (<code>defina('WP_DEBUG', true)<\/code>) e utilize ferramentas como Postman ou cURL para testar os seus pontos finais e validar as respostas. Por exemplo, use cURL para enviar um pedido GET:<\/li><\/ul><pre class=\"wp-block-code\"><code>curl -X GET \"http:\/\/yourdomain.com\/wp-json\/myplugin\/v1\/content?lang=en\"<\/code><\/pre><ul class=\"wp-block-list\"><li><code>curl -X GET \"http:\/\/yourdomain.com\/wp-json\/myplugin\/v1\/content?lang=en\"<\/code>Estas ferramentas ajudam a garantir que os seus pontos finais est\u00e3o a funcionar como esperado e fornecem respostas de erro detalhadas.<\/li>\n\n<li><strong>Coloca\u00e7\u00e3o correta do gancho:<\/strong> Assegure-se de que <code>rest_api_init<\/code> est\u00e1 a ser chamado no momento certo, ou seja, quando todas as outras depend\u00eancias est\u00e3o carregadas. A coloca\u00e7\u00e3o incorrecta pode impedir que as rotas sejam registadas corretamente. \u00c9 aconselh\u00e1vel usar este hook num plugin ou <code>fun\u00e7\u00f5es.php<\/code> do seu tema, mas n\u00e3o antes de todos os plugins terem sido inicializados.<\/li>\n\n<li><strong>Defini\u00e7\u00f5es de Permalinks:<\/strong> Por vezes, as estruturas de permalink s\u00e3o a causa principal de falhas nas rotas. V\u00e1 a Defini\u00e7\u00f5es &gt; Permalinks e guarde novamente as defini\u00e7\u00f5es para atualizar a configura\u00e7\u00e3o de permalink.<\/li><\/ul><h3 class=\"wp-block-heading\">Considera\u00e7\u00f5es sobre seguran\u00e7a<\/h3><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.23.33-An-educational-diagram-titled-Security-Best-Practices-for-WordPress-REST-API.-The-diagram-should-illustrate-key-security-measures-for-securing-REST-.webp\" alt=\"\" class=\"wp-image-4315\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.23.33-An-educational-diagram-titled-Security-Best-Practices-for-WordPress-REST-API.-The-diagram-should-illustrate-key-security-measures-for-securing-REST-.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.23.33-An-educational-diagram-titled-Security-Best-Practices-for-WordPress-REST-API.-The-diagram-should-illustrate-key-security-measures-for-securing-REST--600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.23.33-An-educational-diagram-titled-Security-Best-Practices-for-WordPress-REST-API.-The-diagram-should-illustrate-key-security-measures-for-securing-REST--100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.23.33-An-educational-diagram-titled-Security-Best-Practices-for-WordPress-REST-API.-The-diagram-should-illustrate-key-security-measures-for-securing-REST--300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.23.33-An-educational-diagram-titled-Security-Best-Practices-for-WordPress-REST-API.-The-diagram-should-illustrate-key-security-measures-for-securing-REST--150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.23.33-An-educational-diagram-titled-Security-Best-Practices-for-WordPress-REST-API.-The-diagram-should-illustrate-key-security-measures-for-securing-REST--768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.23.33-An-educational-diagram-titled-Security-Best-Practices-for-WordPress-REST-API.-The-diagram-should-illustrate-key-security-measures-for-securing-REST--12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.23.33-An-educational-diagram-titled-Security-Best-Practices-for-WordPress-REST-API.-The-diagram-should-illustrate-key-security-measures-for-securing-REST--96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>Para garantir a seguran\u00e7a dos seus pontos de extremidade da API REST, deve implementar a autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o adequadas:<\/p><ul class=\"wp-block-list\"><li><strong>Autentica\u00e7\u00e3o com OAuth ou JWT:<\/strong> Considere usar OAuth ou JSON Web Tokens (JWT) para acesso seguro. Esses m\u00e9todos fornecem uma maneira mais robusta de autenticar solicita\u00e7\u00f5es em compara\u00e7\u00e3o com a depend\u00eancia exclusiva do <code>retorno_de_permiss\u00e3o<\/code>. Por exemplo, a utiliza\u00e7\u00e3o do plugin JWT Authentication for WP REST API permite-lhe validar pedidos com um token.<\/li><\/ul><pre class=\"wp-block-code\"><code>fun\u00e7\u00e3o register_multilingual_api_routes() {\n    register_rest_route('myplugin\/v1', '\/content\/', array(\n        'methods' =&gt; 'GET',\n        'callback' =&gt; 'get_multilingual_content',\n        'permission_callback' =&gt; 'is_authenticated_user'\n    ));\n}\n\nfunction is_authenticated_user() {\n    return is_user_logged_in(); \/\/ Verifica\u00e7\u00e3o de exemplo, substitua por valida\u00e7\u00e3o JWT se necess\u00e1rio\n}<\/code><\/pre><ul class=\"wp-block-list\"><li><strong>Limita\u00e7\u00e3o da taxa:<\/strong> Para proteger a sua API contra abusos, considere a implementa\u00e7\u00e3o de um limitador de taxa. Pode utilizar plug-ins como Limit Login Attempts Reloaded para evitar ataques de for\u00e7a bruta ou criar um limitador de taxa personalizado para pedidos de API.<\/li><\/ul><h3 class=\"wp-block-heading\">Conclus\u00e3o<\/h3><p>Criar pontos finais de API REST multilingues com <code>rest_api_init<\/code> no WordPress requer um conhecimento profundo do registo de rotas, tratamento de par\u00e2metros, plug-ins de tradu\u00e7\u00e3o, armazenamento em cache e medidas de seguran\u00e7a. Ao seguir as melhores pr\u00e1ticas - como adicionar corretamente par\u00e2metros de idioma, tratar erros de forma robusta, armazenar em cache para desempenho e proteger pontos finais - pode criar APIs REST multilingues poderosas que satisfa\u00e7am as necessidades do seu projeto.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.24.51-An-educational-summary-diagram-titled-Creating-Multilingual-REST-API-Endpoints-in-WordPress.-The-diagram-should-summarize-key-aspects-of-developing-.webp\" alt=\"\" class=\"wp-image-4316\" srcset=\"https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.24.51-An-educational-summary-diagram-titled-Creating-Multilingual-REST-API-Endpoints-in-WordPress.-The-diagram-should-summarize-key-aspects-of-developing-.webp 1024w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.24.51-An-educational-summary-diagram-titled-Creating-Multilingual-REST-API-Endpoints-in-WordPress.-The-diagram-should-summarize-key-aspects-of-developing--600x600.webp 600w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.24.51-An-educational-summary-diagram-titled-Creating-Multilingual-REST-API-Endpoints-in-WordPress.-The-diagram-should-summarize-key-aspects-of-developing--100x100.webp 100w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.24.51-An-educational-summary-diagram-titled-Creating-Multilingual-REST-API-Endpoints-in-WordPress.-The-diagram-should-summarize-key-aspects-of-developing--300x300.webp 300w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.24.51-An-educational-summary-diagram-titled-Creating-Multilingual-REST-API-Endpoints-in-WordPress.-The-diagram-should-summarize-key-aspects-of-developing--150x150.webp 150w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.24.51-An-educational-summary-diagram-titled-Creating-Multilingual-REST-API-Endpoints-in-WordPress.-The-diagram-should-summarize-key-aspects-of-developing--768x768.webp 768w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.24.51-An-educational-summary-diagram-titled-Creating-Multilingual-REST-API-Endpoints-in-WordPress.-The-diagram-should-summarize-key-aspects-of-developing--12x12.webp 12w, https:\/\/www.openbyt.com\/wp-content\/uploads\/2024\/10\/DALL\u00b7E-2024-10-29-10.24.51-An-educational-summary-diagram-titled-Creating-Multilingual-REST-API-Endpoints-in-WordPress.-The-diagram-should-summarize-key-aspects-of-developing--96x96.webp 96w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>Se \"rest_api_init n\u00e3o est\u00e1 a funcionar\" tem sido a sua frustra\u00e7\u00e3o, este guia tem como objetivo fornecer a profundidade necess\u00e1ria para resolver problemas comuns e garantir um funcionamento sem problemas. Lembre-se de que o desenvolvimento de APIs tem tanto a ver com a compreens\u00e3o da infraestrutura quanto com a escrita de c\u00f3digo, e dedicar tempo para depurar com efici\u00eancia compensar\u00e1 a cria\u00e7\u00e3o de solu\u00e7\u00f5es resilientes e ricas em recursos.<\/p><p>Tem alguma d\u00favida ou precisa de mais orienta\u00e7\u00f5es sobre como implementar o suporte multil\u00edngue para a sua API REST do WordPress? Sinta-se \u00e0 vontade para deixar um coment\u00e1rio abaixo ou entrar em contacto para uma resolu\u00e7\u00e3o de problemas mais detalhada.<\/p>","protected":false},"excerpt":{"rendered":"<p>Se alguma vez tentou tornar os seus pontos de extremidade da API REST do WordPress multilingues e se deparou com problemas de \"rest_api_init not working\", n\u00e3o est\u00e1 sozinho. Implementando...<\/p>","protected":false},"author":31,"featured_media":4317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33,78],"tags":[374,372,373,371],"class_list":["post-4304","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rest-api","category-rest-api-use","tag-api-security","tag-multilingual-support","tag-rest-api-troubleshooting","tag-wordpress-rest-api",""],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/posts\/4304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/comments?post=4304"}],"version-history":[{"count":1,"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/posts\/4304\/revisions"}],"predecessor-version":[{"id":4318,"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/posts\/4304\/revisions\/4318"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/media\/4317"}],"wp:attachment":[{"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/media?parent=4304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/categories?post=4304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.openbyt.com\/pt\/wp-json\/wp\/v2\/tags?post=4304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}