Campos Personalizados: Listar posts com conteúdo em um field_name
-
Estou usando Campos Personalizados em um catálogo de filmes e preciso listas todos os filmes que tenham TRAILLER. Criei um field_name chamado “trailler” e queria listar APENAS os posts em que eu inseri o link do filme (youtube ou vimeo).
Tentei usar isso e não funcionou:
<ul> <?php global $post; $myposts = get_posts('numberposts=500&orderby=title&order=ASC&field_name=trailler&meta_value=http'); foreach($myposts as $post) : ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </ul>
O field_name=trailler e o resultado, o meta_value=http porque tanto os links do youtube como os do vimeo começam com http… mas não listou =(
Queria que listasse os títulos dos posts que tenham trailler.
Alguém pode me ajudar?
-
O que você precisa fazer é uma meta_query: http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
E meta_value=http não vai adiantar nada, ele retornaria apenas os campos que tivesse como valor APENAS ‘http’, nada além disso (o código não vai entender que é “tudo que começa com http…’)
Acho que o que você precisa é buscar apenas pela meta_key=’trailler’.
Espero que ajude.
Quando tento listar usando só a meta_key=’trailler’ lista é todos os posts =(
Eu preciso listar todos os posts em que foi digitado algo no field_name que chamei de “trailler”.
Algo como:
<?php global $post; $myposts = get_posts('field_name=trailler&ALGO_QUE_FILTRE_SÓ_OS_POSTS_COM_TRAILLER'); foreach($myposts as $post) : ?>
Testei alguns exemplos que tinham no link que você passou e não deu certo =(
Então philiperibeiro, acredito que você não vá consegui filtar na query quais posts tem o campo preenchido, isso você terá de avaliar depois de feita a query.
Utilizando get_post_meta() ou get_post_custom(), dentro do loop, você tem de verificar se o campo está preenchido ou não, e a partir desta verificação decidir se o exibe ou não.
Philipe você conseguirá utilizando uma wp_query como a do post http://br.forums.wordpress.org/topic/campos-personalizados-listar-posts-com-1-field_name-e-2-meta_value?replies=5#post-59396
Alterando apenas
array( "key" => "trailler", "value" => "http%", "compare" => "LIKE" )
Siderlan, incluí sua sugestão e não rodou =( Usei outro campo personalizado e também não rodou… Escrevi assim:
<?php $args = array( 'posts_per_page' => 500, 'orderby' => 'title', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'logger', 'value' => 'test%', 'compare' => 'LIKE' ) ) ); $my_query = new WP_Query($args);?> <ul> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?> </a></li> <?php endwhile; ?> </ul>
E depois escrevi como você disse, assim:
<?php $args = array( 'posts_per_page' => 500, 'orderby' => 'title', 'order' => 'ASC', 'meta_query' => array( array( "key" => "logger", "value" => "test%", "compare" => "LIKE" ) ) ); $my_query = new WP_Query($args);?> <ul> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?> </a></li> <?php endwhile; ?> </ul>
Nos posts com o campo personalizado “logger” escrevi o texto teste em um e o texto testando em outro post, por isso que o “value” => “test%”… =(
O “key” deve ser o nome do meta field. Você pode acrescentar outra porcentagem antes do valor “value” => “%valor%”, e continua utilizando o “compare” como “LIKE”, dai você garante que ele vai trazer qualquer um que no valor, contenha o termo utilizado, não importando se está no começo, no meio ou no final.
Pus a porcentagem antes do valor e não deu certo… mudei o meta_field e não deu certo. Mudei o ‘ por ” e também não deu certo. O último código que usei foi esse:
<?php $args = array( 'posts_per_page' => 500, 'orderby' => 'title', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'trailler', 'value' => '%http%', 'compare' => 'LIKE' ) ) ); $my_query = new WP_Query($args);?> <ul> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?> </a></li> <?php endwhile; ?> </ul>
- O tópico ‘Campos Personalizados: Listar posts com conteúdo em um field_name’ está fechado para novas respostas.