¿Por qué WordPress está seleccionando archive.php en lugar de page.php?
Tengo un Custom Post Type (CPT) llamado "Careers" con "careers" como slug.
Creé mi página de listado de Careers con Elementor (el slug de la página también es "careers"), agregué el widget de Posts y usé la configuración de Query para seleccionar mi CPT Careers. Luego usé Elementor nuevamente para crear un tema de Single post para mis posts individuales de careers. Los posts individuales funcionan bien pero ahora cuando hago clic para volver a mi página de listado de Careers, obtengo la página de archivo que no se parece en nada a la página que creé con Elementor (veo que la página ahora está usando archive.php con el plugin Reveal template). Intenté forzar la plantilla seleccionando una plantilla de página personalizada, pero eso no ayudó. También intenté restablecer los Permalinks, eso tampoco ayudó.
Cuando intento abrir mi página Careers en Elementor, obtengo el error "Preview could not be loaded Error". Cuando cambio la URL de la página de "careers" a "career" o "open-positions" entonces el error desaparece, puedo abrir la página con Elementor ahora (con un nuevo slug).
¿Es correcto asumir que el slug del CPT no puede ser el mismo que el slug de la página? ¿Hay una mejor manera de lograr esto (preferiblemente con el mismo slug tanto para la página como para el CPT)? ¿O incluso con la ayuda de Elementor pro?
Este es mi código CPT:
function create_careers_posttype() {
register_post_type( 'careers',
array(
'labels' => array(
'name' => __('Careers'),
'singular_name' => __('Career')
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'careers'),
'show_in_rest' => true,
'supports' => array('title', 'page-attributes'),
)
);
}
add_action( 'init', 'create_careers_posttype' );

No puedes usar el slug careers
como slug de página porque ya está en uso como nombre del CPT. /careers
es el archivo de tus tipos de entrada, por eso se carga archive.php
y no page.php
.
Incluso si tuvieras una página con ese slug, la regla de reescritura del archivo tiene mayor prioridad. También lo encontrarás en el sitemap generado, y el slug /careers
también se usa para generar los enlaces permanentes para las entradas individuales de ese tipo.
Lo más cercano que puedes conseguir es desactivar el archivo.
Intenté forzar la plantilla seleccionando una plantilla de página personalizada pero no funcionó.
Esto no funciona porque la página nunca es lo que se muestra desde el principio. WordPress cree, basado en la consulta principal, que está en un archivo de entradas del tipo careers
y se comportará de acuerdo con la jerarquía de plantillas estándar, eligiendo la plantilla más específica que encuentre y que coincida. Por ejemplo, si archive-careers.php
estuviera disponible, cargaría esa en su lugar.
Recuerda, la plantilla elegida está determinada por los parámetros de la consulta principal. WordPress no cargó una página porque estuvieras en page.php
, es al revés, cargó page.php
porque la consulta principal indicaba que era para una página, y puede decidir cargar una plantilla de página personalizada si esa página en la consulta lo especifica. Pero si es un archivo, eso no ocurre. Consulta la jerarquía de plantillas para más detalles.
¿O incluso con la ayuda de Elementor pro?
Si deseas estilizar ese archivo usando Elementor, entonces necesitarás contactar al soporte de Elementor o publicar en una comunidad de Elementor. El soporte para desarrolladores de plugins de terceros está fuera de tema aquí y no entra en el alcance de este stack.

Hola Tom, no estoy buscando soporte de Elementor aquí, tal vez no fui lo suficientemente claro pero respondiste mi pregunta sobre la unicidad de los slugs, así que gracias :D

Aquí hay un enlace muy útil para entender https://wphierarchy.com/
