Página inicial de suporte > Aparência > Personalizar Posts relacionados

Personalizar Posts relacionados

Assim como em outros módulos do Jetpack, o módulo Posts relacionados inclui filtros que permitem personalizar o visual dos Posts relacionados para atender às suas necessidades.

Os trechos de código abaixo oferecem exemplos de alguns dos filtros incluídos no módulo. Você pode adicionar estes trechos de código ao plugin da funcionalidade ou ao arquivo functions.php do seu tema.

Confira também o código-fonte do Jetpack para descobrir mais filtros.

Alterar o número de Posts relacionados exibidos nos seus posts

Por padrão, a seção Posts relacionados inclui três posts no máximo. Graças ao filtro jetpack_relatedposts_filter_options, você pode alterar esse número desta forma:

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

Mover os Posts relacionados para a parte superior do conteúdo do seu post

Por padrão, a seção Posts relacionados aparecerá no final do post. Graças ao filtro jetpack_relatedposts_filter_options, você pode alterar a seção desta forma para que ela apareça acima do conteúdo do post:

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' );

Inserir os Posts relacionados no interior do conteúdo do seu post usando um código abreviado

Você pode usar o código abreviado [jetpack-related-posts] para inserir Posts relacionados em um local personalizado no interior do conteúdo do post. Após inserir o código abreviado, os Posts relacionados não aparecerão na parte inferior dos posts.

Remover os Posts relacionados da parte inferior de seus posts

Você pode remover Posts relacionados dos posts adicionando o código a seguir no arquivo functions.php do seu tema ou a um plugin de funcionalidade.

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 );

Assim, você pode adicionar novamente os Posts relacionados em um post específico usando o código abreviado mencionado acima ou adicionando o código abreviado diretamente nas páginas de modelo, graças à função do_shortcode(). Para tanto, basta adicionar o código a seguir ao seu modelo, onde você deseja que a seção Posts relacionados seja exibida:


Alterar o cabeçalho “Relacionados” na parte superior da seção Posts relacionados

Neste exemplo, podemos alterar o cabeçalho padrão “Relacionados” por “Veja também:”:

function jetpackme_related_posts_headline( $headline ) {
$headline = sprintf(
			'

<h3 class="jp-relatedposts-headline"><em>%s</em></h3>


',
			esc_html( 'Veja também:' )
			);
return $headline;
}
add_filter( 'jetpack_relatedposts_filter_headline', 'jetpackme_related_posts_headline' );

Substituir um dos Posts relacionados por um resultado personalizado em um post específico

No exemplo a seguir, queremos acrescentar a ID de post 1036 como o primeiro resultado de post relacionado. Portanto, vamos apenas filtrar o array de ocorrências retornadas:

function jetpackme_append_related_post( $hits, $post_id ) {
	// $post_id é o post para o qual estamos obtendo os posts relacionados no momento
        if ( 2194 == $post_id ) {
    	    // Adicione 1036 à frente do array de ocorrências
	    array_unshift( $hits, array( 'id' => 1036 ) );
            // Remova o último elemento do array
            array_pop( $hits );
        }

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

Excluir um post específico para que nunca apareça entre os resultados de Posts relacionados

No exemplo a seguir, 1037 e 1038 são as IDs dos posts que queremos excluir:

function jetpackme_exclude_related_post( $exclude_post_ids, $post_id ) {
	// $post_id é o post para o qual estamos obtendo os posts relacionados no momento
	$exclude_post_ids[] = 1037; // Exclui a post_id 1037
	$exclude_post_ids[] = 1038; // Exclui também a post_id 1038
	return $exclude_post_ids;
}
add_filter( 'jetpack_relatedposts_filter_exclude_post_ids', 'jetpackme_exclude_related_post', 20, 2 );

Excluir uma categoria inteira para que nunca apareça entre os resultados de Posts relacionados

OBSERVAÇÃO: Estes filtros de exclusão de categoria removerão a categoria de todos os resultados de posts relacionados, independentemente das outras categorias no post.

Digamos que você tem uma categoria chamada “Cães” que deseja excluir completamente dos resultados retornados de Posts relacionados que aparecem:

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

Se você desejar eliminar a categoria de posts padrão, isso será um pouco mais complicado, pois os filtros devem excluir ambos os posts marcados como não categorizados, assim como aqueles sem nenhuma categoria definida. Para fazer isso, use o código a seguir:

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' );

Desativar seletivamente Posts relacionados para que não sejam exibidos em posts específicos

Se você não desejar que os Posts relacionados sejam exibidos em posts específicos, você poderá usar este trecho como ponto de partida:

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' );

Você pode usar uma ampla variedade de Tags condicionais no lugar de is_single. No exemplo acima, 17, 19, 1 e 11 são as IDs de post dos posts específicos que não queremos que sejam exibidos em Posts relacionados. Esses posts ainda poderão ser exibidos como Posts relacionados em outros posts.

Incluir páginas nos resultados de busca de conteúdo relacionado

Adicione o código a seguir para incluir páginas na busca de Posts relacionados. Assim, a busca exibirá as páginas nos resultados que aparecem em cada post.

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 );
	}

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

Não adicionar nenhum contexto abaixo de cada Post relacionado

Por padrão, os Posts relacionados incluem algum contexto, como uma explicação rápida do porquê o post foi escolhido como Post relacionado: o motivo pode ser porque ele pertence à mesma categoria ou compartilha a mesma tag.

Você pode remover esse contexto graças a este filtro:

add_filter( 'jetpack_relatedposts_filter_post_context', '__return_empty_string' );

Usar Posts relacionados com Tipos de posts personalizados

Os Posts relacionados funcionarão automaticamente com os posts do seu site. No entanto, você também pode usá-los com outros Tipos de posts personalizados, como Eventos, um Portfólio ou até mesmo Produtos. Para que os Posts relacionados sejam indexados e exibidos nos Tipos de posts personalizados, você precisará adicionar esta função e filtro:

function allow_my_post_types($allowed_post_types) {
	$allowed_post_types[] = 'seu-tipo-de-post';
	return $allowed_post_types;
}
add_filter( 'rest_api_allowed_post_types', 'allow_my_post_types' );

Observe que você precisará editar o código acima e substituir seu-tipo-de-post pelo seu Tipo de post personalizado. Recomendamos também que você reindexe seu site para que o Jetpack fique a par das novas alterações. Você pode reindexar seu site clicando em Jetpack no Painel do site, rolar para baixo e clicar no link “Depurar” na parte inferior da página. Depois disso, o botão “Reindexar posts” estará disponível. Se os Posts relacionados não aparecerem imediatamente juntos aos Tipos de posts personalizados, limpe o cache do navegador e do site.

Adicionar uma imagem de fallback padrão se não for possível encontrar nenhuma imagem no post

Você pode definir uma imagem padrão que será usada com todos os Posts relacionados que não contêm uma imagem no conteúdo do post. Para fazer isso, siga as instruções aqui.

Usar Jetpack_RelatedPosts_Raw para criar a sua própria lista de Posts relacionados

Quando você desejar criar sua própria instância de Posts relacionados, você poderá usar “Jetpack_RelatedPosts::init_raw()” para retornar uma instância estática de “Jetpack_RelatedPosts_Raw”. No exemplo abaixo, criamos um código abreviado que retorna uma lista de Posts relacionados.

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, o nome pode ser qualquer um
			->get_for_post_id(
				get_the_ID(),
				array( 'size' => 3 )
			);

		if ( $related ) {
			foreach ( $related as $result ) {
				// Obtenha as IDs dos posts relacionados
				$related_post = get_post( $result[ 'id' ] );
				// Aqui, você pode fazer qualquer coisa. Aqui obtemos os títulos dos posts
				$posts_titles[] = $related_post->post_title;
			}
		}
	}

	// Retorna uma lista de títulos de posts separados por vírgulas
	return implode( ', ', $posts_titles );
}
// Crie um código abreviado [jprel]
add_shortcode( 'jprel', 'jetpackme_custom_related' );

Ocultar a data do post nos Posts relacionados

Caso você deseje ocultar a data do post, você pode usar este CSS no seu tema ou no módulo de CSS personalizado do Jetpack (em Aparência → Editar CSS):

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

Remover os Posts relacionados dos produtos do WooCommerce

Caso deseje impedir que os Posts relacionados do Jetpack apareçam nos produtos do WooCommerce (porque seu tema já inclui Produtos relacionados, por exemplo), você pode usar o seguinte código:

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' );

Se você tiver mais dúvidas sobre o módulo Posts relacionados, sinta-se à vontade para nos enviar um email.

Esta página foi traduzida de inglês. Leia a página original.

  • Tabela de Conteúdo

  • Categorias

  • Contate-nos

    Precisa de ajuda? Sinta-se à vontade para entrar em contato conosco.