Qual é a maneira mais eficiente de implementar um sistema de postagem favorito?

4

Vou implementar um sistema de postagem favorito para que os usuários possam salvar suas postagens favoritas para leitura posterior.

Eu quero saber qual é a melhor abordagem para fazê-lo, levando em consideração a possibilidade de que centenas de milhares de usuários usem essa função. Os usuários poderão ver suas postagens favoritas em uma página personalizada.

Pensei em três maneiras diferentes de usar poissas, quero saber qual delas seria a melhor em termos de desempenho.

1.- Salvando todos os ids do usuário como um array em um postmeta chamado favoritos.

2.- Fazendo um tipo de post personalizado chamado favoritos.

3.- Criando uma nova tabela de banco de dados 'wp_favorites' que armazena o ID da postagem, o ID do usuário e a data da relação criada.

Então, qual desses três seria o melhor (como eu disse, desempenho sábio)? E quais seriam os prós e contras de cada um deles? Se existe uma maneira melhor, por favor me avise.

    
por Gixty 02.01.2015 / 00:33

3 respostas

1

Use uma tabela personalizada. Crie-o como uma tabela de rede e armazene o ID do site para que você possa usar apenas uma tabela para toda a rede.

row_id | site_id | post_id | user_id

Não há equivalente para essa tabela nas tabelas principais atuais. Evite dados serializados, porque esse formato é específico do PHP, portanto, você não pode ler seus dados em qualquer outra linguagem (incluindo SQL), e classificar ou procurar por qualquer valor é apenas estranho.

Você precisa rastrear sites, usuários e postagens agora para excluir entradas correspondentes sempre que um desses objetos for excluído.

    
por fuxia 02.01.2015 / 05:36
0

UPDATE: Eu não vi a parte da sua pergunta sobre os usuários serem capazes de ver uma página dos favoritos. Com base nisso e no comentário de Stephens, eu acho que use update_user_meta () e get_user_meta () e o armazenamento de IDs de postagem seria uma opção melhor. Dessa forma, seria mais fácil classificar e obter totais com uma WP_User_Query

RESPOSTA ORIGINAL: Salve os IDs do usuário como uma matriz na tabela postmeta. update_post_meta() e get_post_meta() até lidará com serializar / desserializar o array para você.

O desempenho não deve ser sempre o seu fator decisivo quando encontrar uma solução para um problema de programação. O desempenho é importante, mas também é um código que pode ser mantido, legível e escalável. Se você percorrer a estrada da tabela de banco de dados dedicada para ganhos de desempenho leves , terá que gerenciar a criação da tabela, bem como todas as consultas de inserção e recuperação de dados personalizadas

Criando um novo tipo de postagem personalizado para armazenar metadados de um post de um tipo de postagem diferente não faz sentido e vem com a sobrecarga extra de um novo objeto de postagem para um dado em outro objeto de postagem.

Você deve ser realista ao pensar sobre os números envolvidos aqui, se você é positivo, centenas de milhares de usuários usarão esse recurso, todos favorecendo os mesmos posts, então talvez uma tabela de banco de dados dedicada seja sua melhor aposta, mas acho que bastante improvável e é por isso que eu sugeri o uso de postmeta

    
por Andy 02.01.2015 / 01:00
0

O plugin User Bookmarks (descontinuado agora) pelos Plugins de Pippin fez uma combinação: * armazene as postagens "favoritas" na meta do usuário como dados serializados * armazena a contagem total de favoritos no post meta como um inteiro

Isso permite classificar por contagem de favoritos, o que é útil. Você só precisa alterar a contagem quando as pessoas adicionarem / removerem marcadores.

Se você seguir a rota "criar sua própria tabela", recomendo usar o Pods, pois eles oferecem uma boa API para trabalhar com tabelas personalizadas no WordPress.

    
por Emma Arbogast 01.05.2015 / 11:03