Como criar cache na api do Wordpress
Criar cache na api do wordpress é uma tarefa bem simples, primeiramente
abriremos nosso arquivo functions.php
e adicionaremos o seguinte código:
add_action(
'rest_api_init',
function () {
register_rest_route(
'api/v1',
'posts-generic',
array(
'methods' => 'GET',
'callback' => 'get_posts_generic',
'permission_callback' => '__return_true',
)
);
}
);
Essa função estará registrando uma rota na api do wordpress,
na função register_rest_route
o primeiro parâmetro é o namespace,
o segundo é o endpoint e o terceiro é um array com as configurações da rota.
Nesse array, o primeiro é o método HTTP, no nosso caso do teste é GET,
o segundo é a função que será chamada e o terceiro é uma função de permissão,
que no nosso caso é __return_true
que sempre retorna true.
agora vamos criar a função get_posts_generic
que será responsável
por retornar os posts.
function get_posts_generic() {
$transient_key = 'posts_generic_v1';
$cached_posts = get_transient($transient_key);
if($cached_posts) {
return $cached_posts;
} else {
$posts = get_posts();
set_transient($transient_key, $posts, 60 * 60);
return $posts;
}
}
Aqui estamos criando uma chave para o cache na variável,
e verificando se existe algum cache com essa chave,se existir retornamos
o cache, se não existir, pegamos os posts e salvamos o cache com a função set_transient
.
Caso existe uma paginação, é necessário adicionar o número da página na key, podendo ser feito dessa maneira:
$transient_key = 'posts_generic_v1_page_' . $_GET['page'];
O que ele faz por baixo dos "panos", é criar essa chave na tabela wp_options
com um prazo de validade,
após esse prazo passar ele pega de novo as informações.
Essa maneira agiliza esse endpoint evitando toda vez bater em nossa aplicação e banco dados.
Espero que esse artigo tenha te ajudado! Se tiver alguma dúvida pode falar comigo nas minhas redes sociais.
Até a próxima!