✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Adicionar uma próxima postagem aleatória no modelo de página do WordPress usando SQL

12

Muitas vezes você pode obter conselhos sobre como melhorar o SEO (Search Engine Optimization) adicionando links às suas postagens anteriores ao publicar uma nova postagem. Isso ajuda a aumentar o tráfego e funciona de forma semelhante a plugins como ‘Posts Relativos’, mas apenas mais simples.

Todas as postagens do wordpress são armazenadas na tabela, por exemplo, wp_posts e dentro desta tabela, você encontrará post_title, post_name e essas colunas são bastante diretas. Dependendo das configurações de seus URLs de postagem, você pode ter vários formatos de permalinks que podem ser configurados na seção Configurações – Permanlink.

O código PHP a seguir pode ser inserido em seu modelo de página, normalmente single.php que é o modelo de postagem única ou page.php para modelo de página.

Altere wp_posts de acordo, pois isso pode variar um pouco. A consulta SQL retorna um post aleatório onde exclui as páginas, ou menu_items, links etc. E o status do post deve ser publicado o que exclui o rascunho. O limite 1 retorna apenas 1 post. Portanto, se você quiser uma postagem anterior, considere alterar isso para limitar 2.

O permalink no meu site é baseado no post_name, que é mais amigável para SEO. Você pode muito bem personalizar isso. A consulta SQL também pode ser personalizada. Por exemplo, você pode querer retornar postagens relevantes em vez de postagens aleatórias, correspondendo o titlevalor de acordo com o título da postagem atual. Ou você realmente deseja retornar sua postagem anterior ou seguinte classificada por data de publicação, você pode usar o campo ‘post_id’.

Comentários

Yu – “Legal, aleatório é muito bom. Também é melhor garantir que o aleatório esteja relacionado ao post atual. Mas isso geralmente não é um grande problema, desde que o blog seja para um único gênero.

Além disso, a ordem por RAND() funciona bem para milhares de registros. (geralmente o caso de um blog normal). Mas ele queimará seu banco de dados se você tiver milhões de registros na mesma tabela que correspondam aos critérios de pesquisa."

Sim, a ordem SQL por rand() é um pouco complicada e lenta. Ele precisa buscar todos os registros e classificados aleatoriamente. É considerada baixa eficiência quando o tamanho da mesa é médio ou grande. Você pode usar o seguinte truque para obter um registro aleatório de maneira mais rápida, empregando a função rand() no PHP.

// get total number of records $query = "select count(1) from `table`"; $result = mysql_query($query) or die(mysql_error()); $total = mysql_result($result, 0, 0); // get a random $r = rand(0, $total - 1); // return a number between 0 and $total - 1 inclusive using PHP $query = "select * from `table` limit $r, 1"; $result = mysql_query($query) or die(mysql_error());

As causas do limite SQL especificam o deslocamento e o segundo parâmetro especifica o número de registros a serem buscados.

Melhor registro aleatório

De acordo com o acima, a ordem por rand() é extremamente ineficiente se você tiver uma tabela muito grande porque para a ordenação (mesmo que você queira apenas um item), a função rand() será invocada e é isso que não queremos querer. Podemos melhorar o acima usando duas consultas, a primeira retorna o número total de postagens, e temos uma função aleatória do PHP e obtemos o registro aleatório usando a instrução limit.

Fonte de gravação: helloacm.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação