BUG ao adicionar imagens em itens privados (ou não públicos)

Quando crio um item draft, privado ou pending, e tento anexar uma imagem a ele (pode ser qualquer tipo de mídia), a mídia não aparece. Usando imagem isso fica mais claro, pois nenhum dos 3 lugares em que ela apareceria, mostra a imagem.

Apenas quando mudo para publicado, a imagem passa a ser mostrada.

Analisando, descobri que a URL da imagem aparece assim quando publicada:

/wp-content/uploads/tainacan-items/10/70652/AO000016-frente.jpg

E essa pasta 10/70652 existe no servidor.

Se eu mudo para qualquer outro status, a imagem deixa de existir.

Foi quando percebi que, se o status não é “publicado”, as imagens são salvas no servidor numa pasta com _x_ na frente. Ex: _x_70652.

Contudo essa nova URL não é salva no item e, por isso, o BUG acontece.

Já fiz com itens existentes e itens novos e o mesmo comportamento se repete.

O que eu percebi é que a URL da mídia no WP fica sempre sem o _x_, não importa o status do item e por isso itens em status diferentes de publicado têm esse problema.

A mudança de status de publicado para os outros, renomeia corretamente a pasta onde a mídia está salva, mas a questão é que dentro do tainacan, onde ela aparece (seja no admin seja no front), a URL é sempre sem _x_, não importa o status.

Esse comportamento não era assim no passado recente, pois minha cliente só passou a ter esse problema há pouco tempo (± 2 meses).

Se puderem me ajudar nessa questão, eu agradeço. E se precisarem que eu realize algum teste, estou à disposição.

Devo abrir também um bug no git ou aqui é suficiente?

Obrigado,
Fred Marvila

Eu fiz um teste simples e notei que se eu comento a primeira linha da função abaixo, o comportamento se inverte, isto é, o que é publico deixa de mostrar as imagens e o que é privado passa a mostrar.

function wp_get_attachment_url($url, $post_id) {
      $url = str_replace('/' . $this->get_private_folder_prefix(), '/', $url);
      return $url;
}

Oi @marvila!

Este comportamento, que você descreveu bem, é como é gerenciada a questão do acesso aos anexos de itens privados no Tainacan. Falamos um pouco disso no início deste artigo aqui:

E em mais detalhes neste aqui:

Embora não tenhamos feito nenhuma mudança nesta lógica recentemente, este tipo de problema pode acontecer se houverem erros de redirecionamento nas configurações do servidor. O site precisa retornar um 404 quando não encontra um arquivo no endereço tradicional público para que assim o plugin cheque a permissão e caso a tenha leve para a versão do arquivo que está no endereço _x_. Isso pode mudar de servidor pra servidor mas costumam ser regras no .htaccess