Eu sei como obter um valor de campo personalizado para uma postagem específica.
get_post_meta($post_id, $key, $single);
O que eu preciso é obter todos os valores associados a uma chave de postagem personalizada específica em todas as postagens .
Alguém sabe de uma maneira eficiente de fazer isso? Eu não gostaria de percorrer todos os IDs de postagem no banco de dados.
Exemplo:
4 postagens, todas com valores diferentes para um campo personalizado chamado 'Humor'. 2 mensagens têm o valor 'feliz', 1 mensagem tem 'raiva' e 1 mensagem tem 'triste'
Eu quero mostrar: em todos os posts que temos: dois autores felizes, um irritado e um triste.
Mas para muitas postagens.
O que estou procurando é:
- uma função WP para conseguir isso. ou
- uma consulta personalizada para obter isso da maneira mais eficiente possível.
custom-field
mikkelbreum
fonte
fonte
Respostas:
Uma abordagem possível seria usar um dos métodos auxiliares na classe WPDB para fazer uma consulta baseada em meta mais refinada. A ressalva de usar algumas dessas funções, no entanto, é que você normalmente não recebe uma matriz simples de dados e geralmente precisa fazer referências desnecessárias às propriedades do objeto, mesmo que esteja apenas chamando por uma coluna ou linha.
Obviamente, nem todas as funções são a mesma, e uma menção proposital sai para o método WPDB ,
get_col
que retorna uma matriz simples e simples dos dados consultados, faço essa menção especificamente porque o exemplo a seguir irá recorrer a esse método .WordPress - WPDB Selecionando uma coluna de dados
$ wpdb-> get_col ()
Aqui está um exemplo de função que consulta o banco de dados em busca de todas as postagens de um tipo de postagem escolhido, status da postagem e com uma meta-chave específica (ou campo personalizado para os menos preocupados tecnicamente).
Por exemplo, se você deseja descobrir quais postagens têm uma meta-chave de classificação , para os filmes do tipo post e gostaria de armazenar essas informações em uma variável, um exemplo dessa chamada seria ..
Se você quiser fazer nada além de imprimir esses dados na tela, a função implode do PHP pode rapidamente dividir essa matriz simples em linhas de dados.
Você também pode usar os dados retornados para descobrir quantas postagens têm esses meta-valores executando um loop simples sobre os dados retornados e criando uma matriz de contagens, por exemplo.
Essa lógica pode ser aplicada a vários tipos de dados e estendida para funcionar de várias maneiras diferentes. Espero que meus exemplos tenham sido úteis e simples o suficiente para serem seguidos.
fonte
DISTINCT
logo após oSELECT
na função acima. Pode ser útil.Eu gostaria de adicionar uma coisinha ao código do t31os acima. Alterei "SELECT" para "SELECT DISTINCT" para eliminar entradas duplicadas quando eu mesmo usei esse código.
fonte
Não é bom ou necessário usar o $ wpdb global:
fonte
a maneira mais rápida seria uma consulta sql personalizada e não tenho certeza, mas você pode tentar
Se alguma coisa, então é um começo.
fonte
Para obter todos os meta-valores por uma meta-chave
Verifique wp-> db wordpress codex
fonte
Não há razão para que você não possa mesclar t31os e o código da Bainternet para ter uma instrução reutilizável (estilo wordpress) que retorne a contagem e os valores em uma operação eficiente.
É uma consulta personalizada, mas ainda está usando a camada de abstração do banco de dados wordpress - por exemplo, não importa quais são os nomes das tabelas, ou se eles mudam. .
Nesse caso, não estou mais verificando o tipo de postagem e excluindo cadeias vazias:
Neste particular é
Isso retornará uma matriz de objetos assim:
fonte
Use o seguinte com foreach
Supõe que o nome da sua chave de campo personalizada seja
fonte