Caso de uso: Existem links do YouTube em minhas postagens no WordPress. Quero que o vídeo do YouTube apareça automaticamente na postagem correspondente no Discourse após publicar a postagem no WordPress.
Problema: Parece que não funciona porque, após a sincronização, o HTML da postagem no Discourse é:
O vídeo do YouTube só aparece com sucesso se eu remover as tags <p></p>.
Então, como remover as tags <p></p>? Espero não precisar remover as tags <p></p> manualmente, pois posso ter milhares de postagens.
Não tenho certeza se posso remover as tags <p></p>diretamente no arquivo functions.php.
Segui seu tutorial de personalização. Este é o código no functions.php:
// Adiciona a imagem destacada à postagem publicada no Discourse.
function my_namespace_publish_format( $input ) {
ob_start();
?>
{excerpt} **<-----posso remover as tags p aqui?**
<?php
$output = ob_get_clean();
// Observação: a chamada a apply_filters() que estava na função original foi removida.
return $output;
}
add_filter( 'discourse_publish_format_html', 'my_namespace_publish_format' );
Isso deve funcionar se os vídeos estiverem incorporados no seu site WordPress. Pode ser necessário algum teste e erro para obter a formatação correta. O principal problema que encontrei foi que, se houver espaços antes da tag iframe do YouTube, o Discourse irá interpretá-la como código.
Avise-me se essa abordagem não funcionar no seu site.
O que eu gostaria de fazer funcionar seria ter vídeos do YouTube exibidos quando os usuários clicarem no botão “Mostrar Postagem Completa” no Discourse para expandir uma postagem do WordPress. Não tenho certeza se isso será possível, no entanto.
Obrigado por responder. Agradeço imensamente a ajuda.
Mas parece que não está funcionando.
A saída foi:
<small>Originalmente publicado em http://staging.a1.sg/matrix/</small><br><br><iframe title="GCE O-Level
A-Maths: Matrix & its Inverse" width="525" height="394"
src="https://www.youtube.com/embed/alJEZwwtQ3U?feature=oembed" frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>.
</iframe><br><p><iframe title="GCE O-Level A-Maths: Matrix & its Inverse" width="525"
height="394" src="https://www.youtube.com/embed/alJEZwwtQ3U?feature=oembed" frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>.
</iframe></p>
Também adicionei um código extra no arquivo functions.php após testar a solução proposta acima, para garantir que o link do YouTube permaneça como uma string.
A saída do seu primeiro exemplo de código parece próxima do que eu esperava. Acredito que o problema é que você precisa adicionar https://www.youtube.com/embed à configuração do site do Discourse iframes permitidos. Isso permitirá que o iframe presente na marcação da postagem seja exibido como um player de vídeo no Discourse.
Você pode tentar publicar uma postagem sem usar o modelo personalizado agora? Pode ser que tudo o que precisava ser feito fosse adicionar https://www.youtube.com/embed à configuração do site do Discourse iframes permitidos.
Qual editor você está usando no seu site WordPress, o antigo Editor Clássico ou o novo Editor de Blocos? Além disso, você está publicando a postagem completa no Discourse ou apenas um trecho?
Isso pode ser feito escrevendo um pequeno script para publicar postagens a partir de um arquivo CSV.
Para evitar que o link para seu domínio do WordPress apareça abaixo do título do tópico, desmarque a opção “Add Featured Links” na página de configurações do WP Discourse Publishing. Para remover o link destacado de postagens já publicadas, o link pode ser ocultado com CSS ou removido do banco de dados do seu site Discourse. Estou fora do trabalho nos próximos dias, mas posso cuidar disso para você quando retornar na quarta-feira.
Se você puder esperar até quarta-feira, posso ajudar com isso. Se precisar fazer isso antes disso, você pode tentar criar um novo tópico na nossa categoria Support perguntando como criar tópicos via API a partir de um arquivo CSV.