Saltar al contenido Saltar a la navegación

Definir una categoría o un término principal para cualquier taxonomía

Cuando una entrada pertenece a varias categorías, o a varios términos de una misma taxonomía, el término principal le indica a SEOPress cuál debe usar en tus enlaces permanentes, variables dinámicas y migas de pan.

Desde SEOPress 10.4, puedes definir un término principal en todas las taxonomías públicas y jerárquicas que se muestran en la administración de WordPress: las categorías, las categorías de productos de WooCommerce y tus propias taxonomías jerárquicas (por ejemplo, una taxonomía «Género» para libros o una taxonomía «Ubicación» para servicios). Antes de la 10.4, solo las categorías y las categorías de productos ofrecían esta opción.

Para qué sirve el término principal

  • Enlaces permanentes: la categoría principal sustituye a la primera categoría en la etiqueta de enlace permanente %category% de tus entradas, y la categoría de producto principal se usa en los enlaces permanentes de productos de WooCommerce que incluyen la categoría del producto. El término principal de las demás taxonomías no modifica tus enlaces permanentes.
  • Variables dinámicas: %%post_category%% devuelve la categoría principal, y %%_ct_<taxonomy>%% (por ejemplo, %%_ct_genre%%) el término principal de esa taxonomía, en tus títulos, meta descripciones, etiquetas sociales y esquemas. Consulta la lista de variables dinámicas.
  • Migas de pan (SEOPress PRO): cuando se selecciona una taxonomía para un tipo de contenido en SEO > PRO > Migas de pan > Taxonomía para mostrar en migas de pan, la ruta pasa por el término principal de esa taxonomía y por sus términos padre.

Sin término principal, SEOPress usa el primer término asignado a la entrada, como hace WordPress. Si quitas el término principal de la entrada (por ejemplo, desmarcándolo), SEOPress lo ignora y vuelve a usar el primer término.

Definir el término principal de una entrada

El selector solo muestra los términos asignados a la entrada. Primero asigna al menos un término y luego elige el principal. Selecciona Ninguno (se desactivará esta característica) para quitar el término principal.

En el editor de bloques

  1. Edita tu entrada y abre la barra lateral de Ajustes.
  2. En el panel de la taxonomía (Categorías, Categorías de productos o tu propia taxonomía), marca los términos de la entrada.
  3. Debajo de la lista de términos, elige el principal en Elige una categoría principal (o en el selector equivalente que lleva el nombre de tu taxonomía, por ejemplo Elige un Género principal).
  4. Guarda la entrada.

En el editor clásico

El mismo selector se añade en la parte inferior de la caja de la taxonomía (Categorías, Categorías de productos o tu propia taxonomía). Su lista se actualiza según las casillas que marques o desmarques. Elige el término principal y haz clic en Actualizar o Publicar.

En la metabox SEO

En la pestaña Avanzado de la metabox SEO encontrarás un selector por taxonomía, con la misma etiqueta. Esta pestaña siempre ofrece el selector, aunque esté oculto en la caja de la taxonomía (consulta el filtro seopress_primary_term_inline_selector más abajo).

Cómo se guarda el término principal

El término principal se guarda como un metadato de la entrada que contiene el ID del término:

Taxonomía Clave del metadato
Categorías (category) y categorías de productos (product_cat) en los productos de WooCommerce _seopress_robots_primary_cat (sin cambios)
Cualquier otra taxonomía, desde SEOPress 10.4 _seopress_robots_primary_term_{taxonomy}, por ejemplo _seopress_robots_primary_term_genre

Estas claves están disponibles en la API REST de WordPress (campo meta de la entrada). Con WPML, el término principal se copia en las traducciones y se convierte al término traducido. Cuando importas tus datos desde Yoast SEO, también se importa el término principal de cada taxonomía.

Para leer el término principal en tu propio código:

// Primary term of the "genre" taxonomy, as a term ID (empty string if none).
$term_id = get_post_meta( get_the_ID(), '_seopress_robots_primary_term_genre', true );

if ( $term_id && has_term( (int) $term_id, 'genre' ) ) {
	$term = get_term( (int) $term_id, 'genre' );
}

Antes de SEOPress 10.4, algunos sitios guardaban el término de otra taxonomía en _seopress_robots_primary_cat (importación CSV, API REST o filtro seopress_primary_category_list). SEOPress sigue leyendo ese valor para esa taxonomía hasta que guardes un término principal para ella.

Para desarrolladores: filtros

Añade estos fragmentos al archivo functions.php de tu tema hijo o a un plugin must-use.

Elegir las taxonomías que ofrecen un término principal

El filtro seopress_primary_term_taxonomies recibe las taxonomías que ofrecen un selector (un array de objetos WP_Taxonomy indexado por nombre) y el tipo de contenido. Para quitar una taxonomía:

add_filter( 'seopress_primary_term_taxonomies', function( $taxonomies, $post_type ) {
	unset( $taxonomies['genre'] );
	return $taxonomies;
}, 10, 2 );

O para añadir una taxonomía no jerárquica, como las etiquetas de las entradas. Su selector se ofrece en la pestaña Avanzado de la metabox SEO:

add_filter( 'seopress_primary_term_taxonomies', function( $taxonomies, $post_type ) {
	if ( 'post' === $post_type ) {
		$taxonomies['post_tag'] = get_taxonomy( 'post_tag' );
	}
	return $taxonomies;
}, 10, 2 );

Filtrar los términos ofrecidos

El filtro seopress_primary_term_list recibe los términos ofrecidos, el nombre de la taxonomía y la entrada. Por ejemplo, para no ofrecer nunca «Sin categoría»:

add_filter( 'seopress_primary_term_list', function( $terms, $taxonomy, $post ) {
	if ( 'category' !== $taxonomy || ! is_array( $terms ) ) {
		return $terms;
	}
	return array_values(
		array_filter( $terms, function( $term ) {
			return 'uncategorized' !== $term->slug;
		} )
	);
}, 10, 3 );

El antiguo filtro seopress_primary_category_list sigue funcionando, solo para las categorías y las categorías de productos. Solo recibe los términos.

Ocultar el selector en la caja de la taxonomía

Devuelve false en el filtro seopress_primary_term_inline_selector para quitar el selector de la caja de la taxonomía, en el editor de bloques y en el editor clásico. Recibe el valor actual, el nombre de la taxonomía y el tipo de contenido. Un término principal ya guardado sigue funcionando, y la pestaña Avanzado de la metabox SEO sigue ofreciendo el selector.

add_filter( 'seopress_primary_term_inline_selector', function( $enabled, $taxonomy, $post_type ) {
	if ( 'product_cat' === $taxonomy ) {
		return false;
	}
	return $enabled;
}, 10, 3 );

Más información en nuestra página dedicada a este hook: ocultar el desplegable de categoría principal en la pantalla de edición de entradas.