WordPRess possui muitos plug-ins para implementar funções de artigos relacionadas. A vantagem dos plug-ins é que eles são simples de configurar, mas podem ter um pequeno impacto na velocidade do site, por isso muitas pessoas ainda preferem usar código para conseguir isso. as funções necessárias, mas novamente, a implementação do código também tem desvantagens, ou seja, a configuração é complicada e as pessoas que não entendem o código ficam completamente confusas ou só podem copiar o código de outras pessoas.
Aqui compilei várias maneiras de usar o código para implementar artigos relacionados. As funções de cada parte do código serão claramente marcadas, bem como como personalizar as funções que você deseja. qualquer dúvida, você pode publicá-la neste comentário e eu responderei imediatamente. Antes de começarmos, deixe-me explicar que o formato do código HTML gerado por todos os métodos a seguir está no seguinte formato e você pode modificá-lo conforme necessário:
<ul id="xxx">
<li>* <a title="Título do artigo 1" rel="bookmark" href="Link do artigo 1">Título do artigo 1</a></li>
<li>* <a title="Título do artigo 2" rel="bookmark" href="Link do artigo 2">Título do artigo 2</a></li>
...
</ul>
Método 1: relacionado à tag
Primeiro obtenha todas as tags do artigo e, em seguida, obtenha n artigos sob essas tags; então, esses n artigos são artigos relacionados ao artigo. Todos os plug-ins de artigos relacionados ao WordPress que podem ser vistos agora usam este método. Aqui está o código implementado:
<ul id="tags_relacionadas">
<?php
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags){
foreach ($post_tags como $tag)
{
// Obtém a lista de tags
$tag_list[] .= $tag->term_id;
}
// Obtém aleatoriamente uma tag da lista de tags
$post_tag = $tag_list[ mt_rand(0, contagem($tag_list) - 1) ];
// Este método usa a função query_posts() para chamar artigos relacionados. A seguir está a lista de parâmetros.
$args = array(
'tag__in' => array($post_tag),
'category__not_in' => array(NULL), // ID da categoria não incluído
'post__not_in' => array($post->ID),
'showposts' => 6, // Exibe o número de artigos relacionados
'caller_get_posts' => 1
);
query_posts($args);
if (have_posts()):
while (have_posts()): the_post();
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); </li>
<?php finalizando; else : ?>
<li>* Ainda não há artigos relacionados</li>
<?php endif;wp_reset_query() } ?>
</ul>
Instruções de uso: "ID da categoria excluída" significa que os artigos relacionados não exibem artigos nesta categoria. Basta alterar o NULL na mesma linha para o ID da categoria do artigo. Como apenas 6 artigos relacionados são exibidos aqui, não importa quantos valores sejam atribuídos ao parâmetro tag__in de query_posts(), apenas 6 artigos sob uma tag serão exibidos, a menos que a primeira tag tenha 1 artigo e a segunda tag possui 2 artigos, e o terceiro possui 3 artigos. . . . . . Portanto, se este artigo tiver várias tags, o que faremos é obter aleatoriamente o ID de uma tag, atribuí-lo ao parâmetro tag__in e obter os 6 artigos sob a tag.
Método 2: Classificação relacionada
Este método atinge o objetivo de obter artigos relacionados, obtendo o ID da categoria do artigo e, em seguida, obtendo os artigos desta categoria.
<ul id="cat_relacionado">
<?php
$cats = wp_get_post_categories($post->ID);
if ($gatos) {
$cat = get_category( $cats[0] );
$first_cat = $cat->cat_ID;
$args = array(
'categoria__in' => array($first_cat),
'post__not_in' => array($post->ID),
'postagens' => 6,
'caller_get_posts' => 1);
query_posts($args);
if (have_posts()):
while (have_posts()): the_post();
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute();
?>"><?php the_title(); ?></a></li>
<?php finalizando; else : ?>
<li>* Ainda não há artigos relacionados</li>
<?php endif;wp_reset_query() } ?>
</ul>
Método 3: relacionado a tags, aquisição de SQL
O princípio de obtenção de artigos relacionados é semelhante ao método 1, mas na obtenção de artigos, instruções SQL são utilizadas para ler diretamente o banco de dados, obtendo assim aleatoriamente 6 registros de artigos relacionados, em vez da função WordPress query_posts().
<ul id="tags_relacionadas">
<?php
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags){
foreach ($post_tags como $tag)
{
// Obtém a lista de tags
$tag_list[] .= $tag->term_id;
}
// Obtém aleatoriamente uma tag da lista de tags
$post_tag = $tag_list[ mt_rand(0, contagem($tag_list) - 1) ];
$relacionado = $wpdb->get_results("
SELECIONE {$wpdb->prefix}posts.post_title, {$wpdb->prefix}posts.guid
FROM {$wpdb->prefix}postagens, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy
ONDE {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id
E {$wpdb->prefix}term_taxonomy.taxonomy = 'post_tag'
E {$wpdb->prefixo}term_taxonomy.term_taxonomy_id = {$wpdb->prefixo}
term_relationships.term_taxonomy_id
E {$wpdb->prefix}posts.post_status = 'publicar'
E {$wpdb->prefix}posts.post_type = 'post'
E {$wpdb->prefix}term_taxonomy.term_id = '" . $post_tag . "'
E {$wpdb->prefix}posts.ID != '" . $post->ID . "'
PEDIDO POR Rand( )
LIMITE 6");
// O 6 no código acima limita a aquisição de apenas 6 artigos relacionados.
// Ao modificar o número 6, você pode modificar o número de artigos que deseja
if ($relacionado) {
foreach ($relacionado como $relacionado_post) {
?>
<li>* <a href="<?php echo $related_post->guid; ?>" rel="bookmark"
title="<?php echo $ Related_post->post_title; ?>"><?php echo $ Related_post->post_title ?></a></li>
<?php } } else { ?>
<li>* Ainda não há artigos relacionados</li>
<?php } }?>
</ul>
Método 4: Classificação relacionada, aquisição SQL
O princípio de obtenção de artigos relacionados é semelhante ao método 2, mas na obtenção de artigos, instruções SQL são utilizadas para ler diretamente o banco de dados, obtendo assim aleatoriamente 6 registros de artigos relacionados, em vez da função WordPress query_posts().
<ul id="cat_relacionado">
<?php
$cats = wp_get_post_categories($post->ID);
if ($gatos) {
$cat = get_category( $cats[0] );
$first_cat = $cat->cat_ID;
$relacionado = $wpdb->get_results("
SELECIONE wp_posts.post_title, wp_posts.guid
DE wp_posts, wp_term_relationships, wp_term_taxonomy
ONDE wp_posts.ID = wp_term_relationships.object_id
E {$wpdb->prefix}term_taxonomy.taxonomy = 'categoria'
E {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id
E {$wpdb->prefix}posts.post_status = 'publicar'
E {$wpdb->prefix}posts.post_type = 'post'
E {$wpdb->prefix}term_taxonomy.term_id = '" . $first_cat . "'
E {$wpdb->prefix}posts.ID != '" . $post->ID . "'
PEDIDO POR Rand( )
LIMITE 6");
if ($relacionado) {
foreach ($relacionado como $relacionado_post) {
?>
<li>* <a href="<?php echo $related_post->guid; ?>" rel="bookmark"
title="<?php echo $ Related_post->post_title; ?>"><?php echo $ Related_post->post_title ?></a></li>
<?php } } else { ?>
<li>* Ainda não há artigos relacionados</li>
<?php } }?>
</ul>
Método 5: relacionado ao autor
Este método consiste em obter outros artigos do autor deste artigo para servirem como artigos relacionados. O código é o seguinte:
<ul id="autor_relacionado">
<?php
$post_author = get_the_author_meta( 'user_login');
$args = array(
'autor_nome' => $post_autor,
'post__not_in' => array($post->ID),
'showposts' => 6, // Exibe o número de artigos relacionados
'orderby' => data, // Classificar por hora
'caller_get_posts' => 1
);
query_posts($args);
if (have_posts()):
while (have_posts()): the_post();
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark"
title="<?php the_title_attribute(); ?>"><?php the_title() ?></a></li>
<?php finalizando; else : ?>
<li>* Ainda não há artigos relacionados</li>
<?php endif;wp_reset_query();
</ul>
Comparação de eficiência de tempo
Usaremos um código PHP anterior para medir o tempo de execução do código de cada um dos artigos relacionados acima, a fim de avaliar a eficiência de cada um dos métodos acima e fornecer uma referência para sua escolha. O seguinte é obter 6 artigos relacionados no mesmo artigo. O tempo de cálculo final de cada método acima é o seguinte:
Método 1: 0,18067908287048 segundos
Método 2: 0,057158946990967 segundos
Método três: 0,037126064300537 segundos
Método 4: 0,045628070831299 segundos
Método cinco: 0,023991823196411 segundos
Texto original: http://www.ludou.org/how-to-generate-related-posts-in-wordpress.html