Caso de uso: Tengo enlaces de YouTube en mis publicaciones de WordPress. Quiero que el video de YouTube aparezca automáticamente en la publicación correspondiente de Discourse después de publicar la entrada en WordPress.
Problema: Parece que no funciona porque, tras la sincronización, el HTML de la publicación en Discourse es:
El video de YouTube solo se muestra correctamente si elimino las etiquetas <p></p>.
Entonces, ¿cómo elimino las etiquetas <p></p>? Espero no tener que eliminarlas manualmente, ya que podría tener miles de publicaciones.
No estoy seguro de si puedo eliminar las etiquetas <p></p>directamente en el archivo functions.php.
Seguí tu tutorial de personalización. Este es el código en functions.php:
// Agrega la imagen destacada a la publicación que se publica en Discourse.
function my_namespace_publish_format( $input ) {
ob_start();
?>
{excerpt} **<-----¿puedo eliminar las etiquetas p aquí?**
<?php
$output = ob_get_clean();
// Nota: se ha eliminado la llamada a apply_filters() que estaba en la función original.
return $output;
}
add_filter( 'discourse_publish_format_html', 'my_namespace_publish_format' );
Esto debería funcionar si los videos están incrustados en tu sitio de WordPress. Puede que necesites probar y ajustar para obtener el formato correcto. El principal problema que encontré fue que, si hay espacios en blanco antes de la etiqueta iframe de YouTube, Discourse la interpretará como código.
Avísame si este enfoque no funciona en tu sitio.
Lo que me gustaría lograr es que los videos de YouTube se muestren cuando los usuarios hagan clic en el botón “Mostrar publicación completa” en Discourse para expandir una publicación de WordPress. Sin embargo, no estoy seguro de si eso será posible.
<small>Originalmente publicado en http://staging.a1.sg/matrix/</small><br><br><iframe title="GCE O-Level
A-Maths: Matrix & su inversa" 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 & su inversa" 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>
También agregué un código extra en el archivo functions.php después de probar la solución propuesta anteriormente, para asegurarme de que el enlace de YouTube se mantenga como una cadena.
¿O hay alguna forma de crear publicaciones masivamente en Discourse usando datos de Google Sheets? De esta manera, podría prescindir de WordPress. El equivalente en WordPress es wpallimport.com.
La salida de tu primer ejemplo de código se parece mucho a lo que esperaba. Creo que el problema es que necesitas agregar https://www.youtube.com/embed a la configuración del sitio de Discourse allowed iframes. Esto permitirá que el iframe presente en el marcado del mensaje se muestre como un reproductor de video en Discourse.
¿Podrías intentar publicar una publicación sin usar la plantilla personalizada ahora? Es posible que todo lo que necesitaba hacerse fuera agregar https://www.youtube.com/embed a la configuración del sitio iframes permitidos de tu Discourse.
¿Qué editor estás usando en tu sitio de WordPress, el antiguo Editor Clásico o el nuevo Editor de Bloques? Además, ¿estás publicando la publicación completa en Discourse o solo un extracto?
Esto podría hacerse escribiendo un pequeño script para publicar publicaciones desde un archivo CSV.
Para evitar que aparezca el enlace a tu dominio de WordPress debajo del título del tema, desmarca la opción “Add Featured Links” en la página de configuración de WP Discourse Publishing. Para eliminar el enlace destacado de los temas ya publicados, puedes ocultarlo con CSS o eliminarlo de la base de datos de tu sitio Discourse. Estaré fuera del trabajo durante los próximos días, pero podré ayudarte con esto cuando vuelva el miércoles.
Si puedes esperar hasta el miércoles, puedo echarte una mano con esto. Si necesitas hacerlo antes, podrías intentar crear un nuevo tema en nuestra categoría Support preguntando cómo crear temas a través de la API desde un archivo CSV.