WordPress trecho: valor meta extrato com get_posts ()

Trabalhando com um Tipo personalizado Post ( CPT ) é natural para usar as funções internas do WordPress para visualizar e filtrar as mensagens deste tipo. , risulta comodissimo poter creare loop personali sulle proprie tipologie di post. Se você usar os get_posts() é que ele cria um objeto diretamente WP_Query , é muito confortável para criar loops em seus próprios tipos de mensagens pessoais. WordPress também permite fazer filtros para tassionomie pessoal, na contagem, a ordem, chegando aos metadados. Muito útil, de fato, é o processo que permite que você especifique onde em termos de que tipo de meta-dados e compará-lo com regras. Esta característica é útil não só para a CPT , mas também para correio normal. Muitas vezes, estender a informação de uma mensagem (ou página) com campos pessoais que acabam na mesa de pós meta. Estes valores, para além de ser utilizado durante a exposição, pode ser usado para filtrar e armazenar a mensagem.

Por exemplo, aqui é como extrair uma série de CPT ao qual foi adicionado um encontro pessoal (não a do post) no post meta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/ * I criar condições onde * /
array ( $ Meta_query = gama (
série (
'my_meta_key' , 'Key' => 'my_meta_key'
array ( 'Valor' => gama (
$ Hoje
$ MaxDate
)
'numeric' , 'Type' => 'numérico',
'BETWEEN' 'Comparar' => "entre"
)
);

/ * Temas padrão, consulte WP_Query * /
array ( $ Args = gama (
10 , 'Numberposts' => 10,
'publish' , 'Post_status' => 'publicar',
'my_custom_type' , 'Post_type' => 'my_custom_type'
'my_meta_key' , 'Meta_key' => 'my_meta_key'
'meta_value' , 'Orderby' => 'meta_value'
'ASC' , 'Ordem' => 'ASC',
$meta_query 'Meta_query' => $ meta_query
);
get_posts ( $args ) ; $ Posts = get_posts ($ args);

compresa (between) tra $today e $maxDate . No exemplo acima são extraídos tipo 10 mensagens my_custom_type que têm my_meta_key intervalo (entre) entre $today e $maxDate . A data é sempre armazenado como uma string, porque como você sabe nos metadados que você não pode escolher o tipo de dados a serem armazenados, eo tipo string (junto com a serialização) cobri-los todos em prática, a partir dos números inteiros, matrizes, até chegar ao objetos. A data, entrou no formato YYYYMMDD pode ser usado para ambos como um filtro durante a pesquisa, tanto para encomendar o nosso post.
O que o código acima, no entanto, e retornar o valor de my_meta_key . Ele o usa para encontrar os elementos da matriz, mas $posts temos nenhum vestígio. , appesantendo non poco l'intero codice: una select, più n get_post_meta() per ogni post estratto. O que surgem espontaneamente e, em seguida, usar, no caso de outro laço foreach função get_post_meta() , e pesar não apenas o código inteiro: selecionar um plus n get_post_meta() para cada post trecho.

. Felizmente WordPress oferece uma de suas poções mágicas que podem alterar o SQL SELECT que é produzido no interior, quando usamos os get_posts() , o mesmo vale se você criou um objeto WP_Query .
che di solito si preoccupa solo di estrarre le colonne della tabella posts. O filtro posts_fields você pode adicionar colunas a ser extraído durante um normal get_posts() que, geralmente, só se preocupa com a extração colunas dos postos de mesa.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/ * I criar condições onde * /
array ( $ Meta_query = gama (
série (
'my_meta_key' , 'Key' => 'my_meta_key'
array ( 'Valor' => gama (
$ Hoje
$ MaxDate
)
'numeric' , 'Type' => 'numérico',
'BETWEEN' 'Comparar' => "entre"
)
);

/ * Temas padrão, consulte WP_Query * /
array ( $ Args = gama (
10 , 'Numberposts' => 10,
false , 'Suppress_filters' => false,
'publish' , 'Post_status' => 'publicar',
'my_custom_type' , 'Post_type' => 'my_custom_type'
'my_meta_key' , 'Meta_key' => 'my_meta_key'
'meta_value' , 'Orderby' => 'meta_value'
'ASC' , 'Ordem' => 'ASC',
$meta_query 'Meta_query' => $ meta_query
);

/ * Adicione o filtro para adicionar colunas * /
, function ( $fields ) { add_filter ('posts_fields', function ($ fields) {
; global $ wpdb;
sprintf ( ', %s.meta_key, %s.meta_value ' , $wpdb -> postmeta , $wpdb -> postmeta ) ; $ Fields =. sprintf ('% s.meta_key, s.meta_value%', $ wpdb -> postmeta, $ wpdb -> postmeta);
$fields ) ; return ($ campos);
10 , 1 ) ; }, 10, 1);

get_posts ( $args ) ; $ Posts = get_posts ($ args);

Em $posts teríamos uma matriz de objetos com uma propriedade adicional (ou melhor, dois): Colunas meta_key e meta_value. Assim, podemos visualizar e eventualmente rever mais, os nossos dados.

Eu não poderia usar um SQL select personalizado?

Em teoria sim, mas na prática não vale a pena o esforço. As funções internas do WordPress é verdade que no final só servem para gerar uma instrução SQL, mas eles fazem e permitir um monte 'de pequenas coisas mais.

  • Higienizar os parâmetros
  • Nós esconder a complexidade do jogo Cadastre
  • Eles estão sempre atualizados e não forçam-nos a conhecer mais detalhadamente empurrou todo o sistema de banco de dados WordPress
  • Se qualquer outro plugin alterou sua operação através dos filtros, consulte WPML , tudo vai funcionar perfeitamente

Para aqueles que desejam explorar todos os filtros possíveis, veja aqui .

2 comentários para: " "

  1. 26 de janeiro de 2012 vik:

    Giustappunto Eu estou trabalhando em um projeto eo cliente me pediu para mostrar todas as novidades (que são CPT) em um calendário ... Perfeito!

  2. 1 de fevereiro de 2012 louis :

    Olá meu nome é Louis Usei conteúdo personalizado Type Manager para a construção de uma grande exposição que fiz um tipo personalizado chamado "Expositores", onde eu criei como detalhes Expositor:
    Tipo
    Categoria
    Fique não
    Inserção de fotos
    etc ...

    Eu preciso para exibir corretamente em uma página personalizada todos os expositores exemplo de um certo tipo:

    Motores
    No. Nome estande Display (com links que levam para o meu cartão que foi criado com o conteúdo personalizado Type Manager)
    No. Nome estande Display (com links que levam para o meu cartão que foi criado com o conteúdo personalizado Type Manager)
    No. Nome estande Display (com links que levam para o meu cartão que foi criado com o conteúdo personalizado Type Manager)

    Flores
    No. Nome estande Display (com links que levam para o meu cartão que foi criado com o conteúdo personalizado Type Manager)
    No. Nome estande Display (com links que levam para o meu cartão que foi criado com o conteúdo personalizado Type Manager)
    No. Nome estande Display (com links que levam para o meu cartão que foi criado com o conteúdo personalizado Type Manager)

    etc .....

    mais se você pode chreare ao topo da página uma pesquisa de Tipo - Nome - Categoria

    como posso definir essas coisas com WP_Query?

    AJUDE-ME! Olá Agradeço antecipadamente Luigi

Deixe um comentário

TAG XHTML permita: Código de acesso:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL