# WP Discourse realizando muitas requisições para site.json

**URL:** https://meta.discourse.org/t/wp-discourse-performing-a-lot-of-requests-to-site-json/332287
**Category:** Support
**Tags:** wordpress
**Created:** [23 Outubro , 2024 06:55 UTC](https://meta.discourse.org/t/wp-discourse-performing-a-lot-of-requests-to-site-json/332287 "2024-10-23T06:55:11Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [23 Outubro , 2024 06:55 UTC](https://meta.discourse.org/t/wp-discourse-performing-a-lot-of-requests-to-site-json/332287/1 "2024-10-23T06:55:11Z")

</div>

Estou trabalhando em uma integração para um cliente e estava monitorando os logs do Discourse enquanto trabalhava no fórum deles no WordPress.

E foi isso que vi passar (desculpe pelo formato estranho do log). O endereço IP é o endereço IP do servidor WordPress. Ele está executando o [WP Discourse](https://github.com/discourse/wp-discourse) 2.5.5.

Eu revisei o código e não consigo descobrir por que isso está acontecendo.

```plaintext
2024-10-23T06:39:30+00:00|67.225.163.100|5857|0.023|200|GET /site.json HTTP/1.1
2024-10-23T06:39:30+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:30+00:00|67.225.163.100|5857|0.020|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.023|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.024|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.020|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.019|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:32+00:00|67.225.163.100|5857|0.018|200|GET /site.json HTTP/1.1
2024-10-23T06:39:32+00:00|67.225.163.100|5857|0.018|200|GET /site.json HTTP/1.1
2024-10-23T06:39:32+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.024|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.020|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.024|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|5857|0.023|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|662|0.012|429|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|662|0.014|429|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|662|0.011|429|GET /site.json HTTP/1.1

```

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [24 Outubro , 2024 07:54 UTC](https://meta.discourse.org/t/wp-discourse-performing-a-lot-of-requests-to-site-json/332287/2 "2024-10-24T07:54:21Z")

</div>

Imagino que venha desta chamada: [wp-discourse/lib/plugin-utilities.php at main · discourse/wp-discourse · GitHub](https://github.com/discourse/wp-discourse/blob/main/lib/plugin-utilities.php#L273)

Que aparentemente é usada em 3 casos:

- preencher o seletor de categoria em algum formulário
- caixa de meta
- discourse-sidebar

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [24 Outubro , 2024 08:10 UTC](https://meta.discourse.org/t/wp-discourse-performing-a-lot-of-requests-to-site-json/332287/3 "2024-10-24T08:10:40Z")

</div>

Sim.  
A coisa estranha é que deveria estar em cache, e não tenho motivos para acreditar que não esteja.

```php
$categories = get_transient( 'wpdc_discourse_categories' );
if ( ! empty( $options['publish-category-update'] ) || ! $categories ) {
  $body = $this->discourse_request( '/site.json' );
  if ( is_wp_error( $body ) ) {
    return $body;
  }

  if ( $body->categories ) {

    // removido para brevidade

    // Note que definir o cache para 0 desativará a expiração do transient.
    $category_cache_period = apply_filters( 'wpdc_category_cache_minutes', 10 );
    set_transient( 'wpdc_discourse_categories', $discourse_categories, intval( $category_cache_period ) * MINUTE_IN_SECONDS );

    return $discourse_categories;
  } else {
    return new \WP_Error( 'key_not_found', 'A chave de categorias não foi encontrada na resposta do Discourse.' );
  }
}

```

EDIT: Quando listo os transients, tenho uma chave `timeout_wpdc_discourse_categories` com um valor de timestamp em 5 minutos, mas não tenho `wpdc_discourse_categories` 🤔

EDIT 2: `set_transient( 'wpdc_discourse_categories', $discourse_categories, intval( $category_cache_period ) * MINUTE_IN_SECONDS );` está retornando `false`. `$discourse_categories` está preenchido corretamente. Outros transients estão funcionando.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [24 Outubro , 2024 14:50 UTC](https://meta.discourse.org/t/wp-discourse-performing-a-lot-of-requests-to-site-json/332287/4 "2024-10-24T14:50:03Z")

</div>

Atualização: O transitório simplesmente não está sendo salvo. Ele é salvo quando eu o `json_encode()`.

Além disso, não consigo reproduzir isso em outra instância do WordPress, então estou movendo isso para o suporte porque acredito que seja um problema do WordPress. Suspeito que possa haver algum tipo de plugin de segurança interferindo.
