Estou adicionando outra seção IF para outro tipo de post personalizado em WP Discourse: advanced custom filter for discourse_publish_format_html - #12 by Kayla … este é o mesmo tipo de post que eu queria restringir a um tópico específico do Discourse e publicar automaticamente, conforme meu tópico recente Filtering the available categories for a custom post type. Os posts estão sendo publicados automaticamente no tópico correto, mas os campos personalizados que estou tentando incluir no discourse_publish_format_html estão chegando vazios. Verifiquei quatro vezes todos os nomes dos meus campos e ainda assim tudo, exceto os próprios valores dos campos, parece estar chegando ao Discourse.
Tenho curiosidade se algum desses fatores pode ser a razão?
O CPT é criado no WordPress por meio do plugin Gravity Forms Advanced Post Creation Add-On
O CPT tem o Toolset Access aplicado, de modo que apenas editores podem ver esses posts específicos; o status no WP é “publicado”
O CPT está sendo publicado em uma categoria privada do Discourse
O que chega ao Discourse são o título do post/tópico, {author} e {blogurl}. Talvez a chave seja que {excerpt} também retorna vazio, junto com os campos personalizados?
Atualização: desativar completamente o Acesso ao Toolset e/ou criar uma postagem via WordPress em vez do Gravity Form não resolveu os campos personalizados em branco. Por outro lado, {excerpt} começou a aparecer…
Para esclarecer, o Toolset Access não parece ter relação com essa diferença em relação ao {excerpt}.
Se eu criar uma postagem via admin do WP, o {excerpt} é exibido (a postagem está usando o editor de blocos). O {excerpt} é publicado em branco se criado por meio do Gravity Form (que cria um bloco “clássico” para conter o campo WYSIWYG).
Campos personalizados (linha única, múltiplas linhas e número) continuam retornando em branco, independentemente de como a postagem é criada.
Se a mensagem de “sucesso” não for exibida, mas a postagem tiver sido publicada, então o problema está na configuração do tipo de postagem personalizado.
Se a mensagem de “sucesso” estiver sendo exibida, os campos personalizados devem estar disponíveis como metadados da postagem, que podem ser recuperados com get_post_meta( $post_id, 'your_meta_key_name', true );. A maneira mais fácil de descobrir o que está acontecendo seria escrever em um arquivo debug.log a partir da sua função cosmos_custom_publish_format_html.
Estou fora do trabalho esta semana, então posso demorar um pouco mais para responder às perguntas do que o normal.
Finalmente consegui chegar à conclusão: o problema parece vir da opção de publicação automática (também um novo fator, que passou despercebido). Se eu desmarcar essa opção, publicar o post no WordPress e, depois, publicar no Discourse, os campos personalizados são transferidos para o Discourse e exibidos corretamente. Ou, se eu permitir que a publicação automática ocorra, os campos aparecerão no Discourse após clicar em “Atualizar Tópico no Discourse” no WordPress. Parece que, quando o post é publicado automaticamente, ele é publicado antes que os dados dos campos personalizados sejam salvos corretamente no WordPress.