Support Home > Apariencia > Personaliza Entradas relacionadas

Personaliza Entradas relacionadas

Al igual que otros módulos de Jetpack, el módulo Entradas relacionadas incluye filtros que te permiten personalizar su apariencia para que se ajuste a tus necesidades.

Los fragmentos de código siguientes proporcionan ejemplos de algunos de los filtros que se incluyen en el módulo. Puedes añadir estos fragmentos de código a un plugin de funcionalidad o al archivo functions.php de tu tema.

También puedes consultar el código fuente de Jetpack para descubrir más filtros.

Cambia el número de entradas relacionadas que se muestran debajo de tus entradas

Por defecto, la sección Entradas relacionadas incluye tres entradas como máximo. Puedes cambiar este número gracias al filtro jetpack_relatedposts_filter_options; por ejemplo:

function jetpackme_more_related_posts( $options ) {
	$options['size'] = 6;
	return $options;
}
add_filter( 'jetpack_relatedposts_filter_options', 'jetpackme_more_related_posts' );

Mueve Entradas relacionadas a la parte superior del contenido de tu entrada

Por defecto, la sección Entradas relacionadas se mostrará al final de tu entrada. Puedes cambiar la posición para que se muestre antes que el contenido de la entrada gracias al filtro jetpack_relatedposts_filter_options; por ejemplo:

function jetpackme_move_related_posts_to_top( $options ) {
	$options['show_above_content'] = true;
	return $options;
}
add_filter( 'jetpack_relatedposts_filter_options', 'jetpackme_move_related_posts_to_top' );

Inserta Entradas relacionadas en el contenido de tu entrada mediante un código abreviado

Puedes usar el código abreviado [jetpack-related-posts] para insertar Entradas relacionadas en una ubicación personalizada en el contenido de tu entrada. Cuando hayas insertado el código abreviado, Entradas relacionadas no se mostrará en la parte inferior de tus entradas.

Elimina Entradas relacionadas de la parte inferior de tus entradas

Puedes eliminar Entradas relacionadas de tus entradas añadiendo el código siguiente al archivo functions.php de tu tema o a un plugin de funcionalidad.

function jetpackme_remove_rp() {
    if ( class_exists( 'Jetpack_RelatedPosts' ) ) {
        $jprp = Jetpack_RelatedPosts::init();
        $callback = array( $jprp, 'filter_add_target_to_dom' );
        remove_filter( 'the_content', $callback, 40 );
    }
}
add_filter( 'wp', 'jetpackme_remove_rp', 20 );

Después, puedes volver a añadir Entradas relacionadas a una entrada concreta usando el código abreviado mencionado anteriormente o añadiéndolo directamente a tus páginas de plantilla, gracias a la función do_shortcode(). Para ello, solo tienes que añadir lo siguiente a tu plantilla, donde quieras que se muestre Entradas relacionadas:


Cambia el título “Relacionado” situado en la parte superior de la sección Entradas relacionadas

En este ejemplo, podemos cambiar el título por defecto “Relacionado” por “¡No te lo pierdas!”:

function jetpackme_related_posts_headline( $headline ) {
$headline = sprintf(
			'</pre>
<h3 class="jp-relatedposts-headline"><em>%s</em></h3>
<pre>
',
			esc_html( '¡No te lo pierdas!' )
			);
return $headline;
}
add_filter( 'jetpack_relatedposts_filter_headline', 'jetpackme_related_posts_headline' );

Sustituye una de las entradas relacionadas por un resultado personalizado en una entrada concreta

En el ejemplo siguiente, queremos añadir el identificador de entrada 1036 como primer resultado de entrada relacionada, por lo que filtramos la matriz “hits” devuelta:

function jetpackme_append_related_post( $hits, $post_id ) {
	// $post_id es la entrada que recibe entradas relacionadas actualmente
        if ( 2194 == $post_id ) {
    	    // Añade 1036 a la parte frontal de la matriz "hits"
	    array_unshift( $hits, array( 'id' => 1036 ) );
            // Elimina el último elemento de la matriz
            array_pop( $hits );
        }

	return $hits;
}
add_filter( 'jetpack_relatedposts_filter_hits', 'jetpackme_append_related_post', 20, 2 );

Excluye una entrada concreta para que no se muestre en los resultados de Entradas relacionadas

En el siguiente ejemplo, 1037 y 1038 son los ID de las entradas que queremos excluir:

function jetpackme_exclude_related_post( $exclude_post_ids, $post_id ) {
	// $post_id es la entrada que recibe entradas relacionadas actualmente
	$exclude_post_ids[] = 1037; // Se excluye post_id 1037
	$exclude_post_ids[] = 1038; // También se excluye post_id 1038
	return $exclude_post_ids;
}
add_filter( 'jetpack_relatedposts_filter_exclude_post_ids', 'jetpackme_exclude_related_post', 20, 2 );

Excluye una categoría entera para que no se muestre en los resultados de Entradas relacionadas

NOTA: estos filtros de exclusión de categorías eliminan la categoría de todos los resultados de entradas relacionadas, independientemente del resto de categorías de la entrada.

Supongamos que tienes la categoría “Perros” y que quieres excluirla por completo para que no se muestre en las entradas relacionadas devueltas:

function jetpackme_filter_exclude_category( $filters ) {
    $filters[] = array( 'not' =>
      array( 'term' => array( 'category.slug' => 'perros' ) )
    );
    return $filters;
}
add_filter( 'jetpack_relatedposts_filter_filters', 'jetpackme_filter_exclude_category' );

Si quieres eliminar la categoría de entrada por defecto, el proceso es más complicado ya que los filtros deben excluir las dos entradas marcadas como no categorizadas, así como las que no tienen una categoría establecida. Para hacerlo, utiliza lo siguiente:

function jetpackme_filter_exclude_uncategorized( $filters ) {
    $filters[] = array( 'exists' =>
      array( 'field' => 'category.slug' )
    );
    $filters[] = array( 'not' =>
      array( 'term' => array( 'category.slug' => 'uncategorized' ) )
    );
    return $filters;
}
add_filter( 'jetpack_relatedposts_filter_filters', 'jetpackme_filter_exclude_uncategorized' );

Desactiva Entradas relacionadas de forma selectiva para que no se muestre en determinadas entradas

Si tienes entradas concretas en las que no quieres que se muestre Entradas relacionadas, usa este fragmento para empezar.

function jetpackme_no_related_posts( $options ) {
    if ( is_single( array( 17, 19, 1, 11 ) ) ) {
    	$options['enabled'] = false;
    }
    return $options;
}
add_filter( 'jetpack_relatedposts_filter_options', 'jetpackme_no_related_posts' );

Puedes usar una gran variedad de etiquetas condicionales en lugar de is_single. En el ejemplo anterior, 17, 19, 1 y 11 son los ID de las entradas concretas de las que queremos eliminar Entradas relacionadas. Dichas entradas pueden seguir mostrándose como Entradas relacionadas en otras entradas.

Incluye páginas en los resultados de búsqueda de contenido relacionado

Añade lo siguiente para incluir páginas en la búsqueda de Entradas relacionadas, que mostrará páginas en los resultados que se muestren en cada entrada.

function jetpackme_add_pages_to_related( $post_type, $post_id ) {
	if ( is_array( $post_type ) ) {
		$search_types = $post_type;
	} else {
		$search_types = array( $post_type );
	}

	// Añade páginas
	$search_types[] = 'page';
    return $search_types;
}
add_filter( 'jetpack_relatedposts_filter_post_type', 'jetpackme_add_pages_to_related', 10, 2 );

No añadas ningún tipo de contenido debajo de Entradas relacionadas

Por defecto, Entradas relacionadas muestra algún tipo de contexto, como una explicación breve de por qué esa entrada se ha elegido como entrada relacionada: por ejemplo, porque pertenece a la misma categoría o porque comparte la misma etiqueta.

Puedes eliminar este tipo de contexto gracias a este filtro:

add_filter( 'jetpack_relatedposts_filter_post_context', '__return_empty_string' );

Usa Entradas relacionadas con tipos de entradas personalizadas

Entradas relacionadas funciona automáticamente con las entradas de tu sitio, pero también puedes usar este módulo con otros tipos de entradas personalizadas que puedas tener, como Eventos, Portafolio o incluso Productos. Para que Entradas relacionadas se indexe y se muestre en tus tipos de entradas personalizadas, añade esta función y este filtro:

function allow_my_post_types($allowed_post_types) {
	$allowed_post_types[] = 'your-post-type';
	return $allowed_post_types;
}
add_filter( 'rest_api_allowed_post_types', 'allow_my_post_types' );

Ten en cuenta que debes editar el código anterior y sustituir your-post-type por tu tipo de entrada personalizada. También te aconsejamos que vuelvas a indexar tu sitio para que Jetpack tenga en cuenta los cambios. Para reindexarlo, haz clic en Jetpack en el escritorio de tu sitio y desplázate hacia abajo para hacer clic en el enlace “Depurar” situado en la parte inferior de la página. Allí verás la opción “Volver a indexar las entradas”. Si Entradas relacionadas no se muestra con tus tipos de entradas personalizadas, prueba a limpiar la memoria caché del navegador y del sitio.

Añade una imagen alternativa por defecto si no se encuentra ninguna imagen en una entrada

Puedes definir una imagen por defecto que se use con todas las entradas relacionadas que no contengan una imagen. Para ello, sigue estas instrucciones.

Usa Jetpack_RelatedPosts_Raw para crear tu propia lista de Entradas relacionadas

Cuando quieras crear tu propia instancia de Entradas relacionadas, usa “Jetpack_RelatedPosts::init_raw()” para devolver una instancia estática de “Jetpack_RelatedPosts_Raw”. En el ejemplo siguiente, hemos creado un código abreviado que devuelve una lista de Entradas relacionadas.

function jetpackme_custom_related( $atts ) {
	$posts_titles = array();

	if ( class_exists( 'Jetpack_RelatedPosts' ) && method_exists( 'Jetpack_RelatedPosts', 'init_raw' ) ) {
		$related = Jetpack_RelatedPosts::init_raw()
			->set_query_name( 'jetpackme-shortcode' ) // Opcional, puede ser cualquier nombre
			->get_for_post_id(
				get_the_ID(),
				array( 'size' => 3 )
			);

		if ( $related ) {
			foreach ( $related as $result ) {
				// Obtén los ID de las entradas relacionadas
				$related_post = get_post( $result[ 'id' ] );
				// Desde allí puedes hacer casi de todo. Así es cómo obtenemos los títulos de las entradas
				$posts_titles[] = $related_post->post_title;
			}
		}
	}

	// Devuelve una lista de títulos de entradas separados por comas
	return implode( ', ', $posts_titles );
}
// Crea un código abreviado [jprel]
add_shortcode( 'jprel', 'jetpackme_custom_related' );

Oculta la fecha de publicación en Entradas relacionadas

Si quieres ocultar la fecha de publicación, puedes usar este CSS en tu tema o en el módulo CSS personalizado de Jetpack (en Apariencia → Editar CSS):

.jp-relatedposts-post-date {
display: none;
}

Elimina Entradas relacionadas de los productos de WooCommerce

Si quieres evitar que Entradas relacionadas de Jetpack se muestre en productos de WooCommerce (por ejemplo, porque tu tema ya incluye Productos relacionados), usa lo siguiente:

function exclude_jetpack_related_from_products( $options ) {
    if ( is_product() ) {
        $options['enabled'] = false;
    }

    return $options;
}

add_filter( 'jetpack_relatedposts_filter_options', 'exclude_jetpack_related_from_products' );

Si tienes más preguntas acerca del módulo Entradas relacionadas, envíanos un correo electrónico.

  • Tabla de contenido