Depuración de problema con publicación de tipo de post personalizado en blanco

Estoy agregando otra sección IF para otro tipo de contenido personalizado en WP Discourse: advanced custom filter for discourse_publish_format_html - #12 by Kayla … este es el mismo tipo de contenido que quería restringir a un tema específico de Discourse y publicar automáticamente según mi tema reciente Filtering the available categories for a custom post type. Los posts se están publicando automáticamente en el tema correcto, pero los campos personalizados que intento incluir en discourse_publish_format_html aparecen vacíos. He verificado cuatro veces todos los nombres de mis campos y, sin embargo, todo parece llegar a Discourse excepto los valores de los campos mismos.

Me pregunto si alguno de estos factores podría ser la razón:

  1. El tipo de contenido personalizado (CPT) se creó en WordPress mediante el complemento Gravity Forms Advanced Post Creation Add-On.
  2. El CPT tiene Toolset Access aplicado, por lo que solo los editores pueden ver estos posts en particular; el estado en WP es “publicado”.
  3. El CPT se está publicando en una categoría privada de Discourse.

Lo que sí llega a Discourse es el título del post/tema, {author} y {blogurl}. ¿Quizás la clave sea que {excerpt} también devuelve vacío junto con los campos personalizados?

1 me gusta

Actualización: Deshabilitar por completo el Acceso a Toolset y/o crear una publicación mediante WordPress en lugar del Gravity Form no solucionó los campos personalizados en blanco. Por otro lado, {excerpt} sí comenzó a aparecer…

1 me gusta

Para aclarar, Toolset Access no parece tener relación con esta diferencia con {excerpt}.

Si creo una entrada a través del administrador de WP, {excerpt} se muestra correctamente (la entrada utiliza el editor de bloques). {excerpt} se publica en blanco si se crea a través del formulario de Gravity (que crea un bloque “clásico” para contener el campo WYSIWYG).

Los campos personalizados (de una sola línea, varias líneas y numérico) siguen devolviendo valores en blanco, independientemente de cómo se cree la entrada.

1 me gusta

Después de publicar la publicación, ¿ves un aviso similar a este en la barra lateral de Discourse del editor?

Si el mensaje de “éxito” no se muestra, pero la publicación ya fue publicada, entonces el problema está en la configuración del tipo de publicación personalizado.

Si el mensaje de “éxito” sí se muestra, los campos personalizados deberían estar disponibles como metadatos de la publicación y poderse recuperar con get_post_meta( $post_id, 'your_meta_key_name', true );. La forma más sencilla de averiguar qué está ocurriendo sería escribir en un archivo debug.log desde tu función cosmos_custom_publish_format_html.

Estoy fuera del trabajo esta semana, así que es posible que tarde un poco más en responder preguntas de lo habitual.

2 Me gusta

Por fin he logrado reducir el problema: parece que el origen está en la opción de publicación automática (un factor nuevo que había pasado por alto). Si desmarco esta opción, publico la entrada en WordPress y luego la publico en Discourse, los campos personalizados se transfieren a Discourse y se muestran correctamente. O bien, si permito que ocurra la publicación automática, los campos aparecen en Discourse tras pulsar “Actualizar tema de Discourse” en WordPress. Parece que, cuando la entrada se publica automáticamente, se hace antes de que los datos de los campos personalizados se guarden correctamente en WordPress.

2 Me gusta