Plantillas de artículo individual

Una plantilla de artículo individual muestra el cuerpo del post actual o de un elemento de tipo de contenido personalizado de POM. Sus etiquetas de combinación usan los campos, medios y metadatos de ese elemento.

Autoría de la organización en Rank Math

Para el contenido escrito en nombre de la organización del sitio, activa Use organization as schema author en Settings → POM Theme → Templates → Blog → Post single. Para un tipo de contenido personalizado de POM, abre su pestaña en Templates y los ajustes individuales correspondientes.

Configura primero la organización en Rank Math. El ajuste está desactivado por defecto y solo se aplica al tipo de contenido seleccionado. Hace que el schema Article, BlogPosting y NewsArticle referencie como autor a la organización editora existente de Rank Math. Sin una organización editora que contenga un ID y un nombre, se conserva el autor existente.

Guarda, abre un elemento publicado e inspecciona su JSON-LD: el author del artículo debería referenciar el @id de la organización. Las cuentas de usuario de WordPress, las firmas visibles y el {{author_name}} no cambian. Mantén la opción desactivada para el contenido que deba identificar a un autor individual.

Condiciones

Los bloques condicionales inspeccionan un campo personalizado:

{{if meta="event_status" value="confirmed"}}
    <p>Confirmed</p>
{{else}}
    <p>Provisional</p>
{{/if}}
value Coincidencia
Un valor exacto El campo guardado es igual a ese valor
empty El campo no tiene valor
not_empty El campo tiene un valor

Las condiciones usan la misma sintaxis y comparaciones que las plantillas de feed. Pueden contener HTML, otras etiquetas de combinación, shortcodes, condiciones anidadas y una rama {{else}} opcional. Solo se muestra la rama seleccionada. Cierra cada condición con su propio {{/if}}.

{{if meta="event_status" value="confirmed"}}
    {{if meta="venue" value="not_empty"}}
        <p>{{meta name="venue" only_content="true"}}</p>
    {{else}}
        <p>Venue to be announced.</p>
    {{/if}}
{{else}}
    <p>Confirmation pending.</p>
{{/if}}

Las comparaciones exactas distinguen entre mayúsculas y minúsculas. Como en las plantillas de feed, empty también coincide con un campo ausente, cero (0 o "0"), false y un array vacío; not_empty coincide con valores que no están vacíos. Comprueba el resultado en elementos con campos rellenados y ausentes antes de publicar.

Campos principales del post

Etiqueta de combinación Atributos Resultado
{{post_id}} Ninguno ID del post actual
{{title}} Ninguno Título
{{content}} fallback_message Contenido completo o la alternativa suministrada
{{excerpt}} limit Extracto de texto plano, acortado al límite de caracteres
{{permalink}} Ninguno Enlace permanente
{{date}} Ninguno Fecha de publicación
{{modified}} Ninguno Fecha de modificación
{{author_name}} Ninguno Nombre visible del autor
{{posts_nav}} Ninguno Navegación al post anterior/siguiente

Ejemplos:

<h1>{{title}}</h1>
<p>{{excerpt limit="150"}}</p>
<div class="entry-content">
    {{content fallback_message=%%No description is available.%%}}
</div>
{{posts_nav}}

Los shortcodes de contenido y alternativa se procesan. Un post protegido con contraseña muestra su formulario de contraseña en lugar de la alternativa.

La navegación compartida de posts puede incluir un icono central que enlaza a una página de listado. En Settings → POM Theme → Templates, abre los ajustes individuales del tipo de contenido, busca Posts navigation y configura Posts navigation icon link. Usa directamente la URL de la página de listado publicada en lugar de una URL de archivo más antigua que redirija allí.

Con Polylang activo, un destino que resuelva a una página o post de WordPress sigue la traducción visible públicamente de ese elemento en el idioma actual. Por ejemplo, una única página de Proyectos configurada puede llevar a su equivalente en inglés o en español. Se conservan el resto de parámetros de consulta y fragmentos; los parámetros de objeto e idioma provienen del enlace permanente traducido. Las URL externas, los destinos no resueltos y los elementos sin una traducción visible públicamente mantienen la URL configurada.

Después de guardar, abre un elemento individual en cada idioma y sigue el icono central. Confirma que llega directamente al listado previsto y que permanece en ese idioma. Los enlaces al elemento anterior y siguiente siguen usando los ajustes de navegación existentes.

Devuelve el HTML completo de la imagen:

{{featured_image image_size="large"}}

Devuelve solo su URL:

<div class="hero" style="background-image:url('{{featured_image_url image_size="full"}}')"></div>

image_size acepta un tamaño de imagen registrado de WordPress. Estas etiquetas quedan vacías cuando no se puede resolver ninguna imagen destacada.

Imagen de campo personalizado

{{image_from_meta name="speaker_portrait"}}

name es la clave del campo personalizado que contiene el valor de la imagen. La etiqueta devuelve el HTML de la imagen cuando el valor puede resolverse.

Las dimensiones conocidas del adjunto se incluyen automáticamente como atributos numéricos width y height, incluidas las dimensiones recuperadas de archivos SVG locales. Establece cualquiera de las dos dimensiones en un entero positivo en píxeles para controlar el tamaño de la imagen; omite la otra o usa auto para preservar sus proporciones:

{{image_from_meta name="speaker_portrait" width="160" height="auto"}}
{{image_from_meta name="square_icon" width="40" height="40"}}

Con ambas dimensiones omitidas o establecidas en auto, se usan las dimensiones de origen. Un SVG con solo un viewBox necesita al menos una dimensión numérica para producir un par numérico completo. Las dimensiones no resolubles se omiten, y se ignoran los valores no válidos o unidades CSS como 40px. El HTML generado nunca contiene width="auto" ni height="auto". CSS puede sobrescribir las dimensiones de visualización; usa height: auto cuando cambies el ancho de una imagen proporcionalmente.

Las plantillas de feed y de artículo individual comparten las mismas reglas de dimensiones de imagen de campo personalizado y requisitos de SVG.

{{gallery
    meta_name="event_gallery"
    style="masonry"
    image_size="large"
    lightbox_click="yes"
}}
Atributo Propósito
meta_name Clave del campo de galería obligatoria
style Presentación de la galería, incluyendo grid, masonry, carrousel, carousel_2, full_screen o images_only
image_size Tamaño de imagen registrado de WordPress
lightbox_click Usa yes para abrir las imágenes en la presentación lightbox compatible

images_only devuelve una serie sencilla de imágenes sin el contenedor de presentación de la galería.

Metadatos personalizados

{{meta name="venue"}}
{{meta name="start_date" type="date" only_content="true"}}
{{meta name="doors_open" type="time" prepend=%%Doors: %% icon="feather/clock"}}
Atributo Propósito
name Clave del campo personalizado obligatoria
type Formatea el valor como date, datetime o time
only_content Usa true para omitir el contenedor de metadatos por defecto
prepend Texto antes del valor
append Texto después del valor
icon Icono mostrado con la forma envuelta
translatable Marca las etiquetas admitidas para su traducción

Cuando se omite only_content="true", POM añade un contenedor de metadatos con clases basadas en la clave del campo.

Iconos y cadenas traducidas

{{icon family="feather" name="map-pin"}}
{{translatable_string text=%%Location%%}}

Usa %%...%% para etiquetas traducidas que contengan espacios o puntuación. Consulta Formato de los atributos de las etiquetas de combinación para etiquetas anidadas.

Ejemplo completo

<article class="profile">
    <header class="profile-header">
        {{featured_image image_size="medium_large"}}
        <div>
            <h1>{{title}}</h1>
            {{if meta="role" value="not_empty"}}
                <p>{{meta name="role" only_content="true"}}</p>
            {{/if}}
        </div>
    </header>

    <div class="profile-content">{{content}}</div>

    {{if meta="photo_gallery" value="not_empty"}}
        {{gallery meta_name="photo_gallery" style="grid" image_size="medium" lightbox_click="yes"}}
    {{/if}}

    {{posts_nav}}
</article>