Suporte » Desenvolvendo com WordPress » Listar páginas relacionadas utilizando um campo personlizado

  • Resolvido WallaceErick

    (@wallaceerick)


    Pessoal, criei um campo customizado em minhas páginas, chamado ‘Categoria’, cada página tem um valor de categoria e algumas são iguais.

    Gostaria de listar na sidebar da página visitada, todas as outras páginas que possuem esse mesmo campo personalizado, mas não estou conseguindo, alguém pode me ajudar?

    Pra puxar o valor desse campo, eu uso o código:
    <?php //echo get_post_meta($post->ID, "Categoria", true); ?>

    E pra listar posts recente, eu uso:

    <?php
    				$args = array( 'numberposts' => 3, 'order'=> 'DESC', 'orderby' => 'post_date' );
    				$postslist = get_posts( $args );
    				foreach ($postslist as $post) :  setup_postdata($post);
    			?>
    			<li>
    				<figure>
    				<?php the_post_thumbnail(array(50,50)); ?>
    					 <figcaption>
    						<h4><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
    						<p>Postado por <?php the_author(); ?> | <?php the_time('d/m/y'); ?> | <?php comments_popup_link(__('Sem Comentários'), __('1 Comentário'), __('% Comentários'), '', __('Não é permitido comentar!') ); ?></p>
    					</figcaption>
    				</figure>
    			</li>
    			<?php endforeach; ?>

    Então precisaria que ao invés de posts recente, como nesse exemplo, fossem as páginas que tem o mesmo valor ‘Categoria’.

    Muito Obrigado.

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • Seria só você usar isso em sua consulta

    $args = array(
      'numberposts' => 3,
      'order'=> 'DESC',
      'orderby' => 'post_date',
      'meta_query' => array(array(
    			'key' => 'Categoria',
    			'value' => 'Valor que você está usando',
    		) );

    Para saber mais
    http://codex.wordpress.org/get_posts

    Criador do tópico WallaceErick

    (@wallaceerick)

    Em que parte do código eu colocaria isso, assim?

    <?php
    				$args = array(
    						  'numberposts' => 3,
    						  'order'=> 'DESC',
    						  'orderby' => 'post_date',
    						  'meta_query' => array(array(
    									'key' => 'Categoria',
    									'value' => '',
    								)));
    				$postslist = get_posts( $args );
    				foreach ($postslist as $post) :  setup_postdata($post);
    			?>
    			<li>
    				<figure>
    				<?php the_post_thumbnail(array(50,50)); ?>
    					 <figcaption>
    						<h4><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
    						<p>Postado por <?php the_author(); ?> | <?php the_time('d/m/y'); ?> | <?php comments_popup_link(__('Sem Comentários'), __('1 Comentário'), __('% Comentários'), '', __('Não é permitido comentar!') ); ?></p>
    					</figcaption>
    				</figure>
    			</li>
    			<?php endforeach; ?>

    Pq se for, não funcionou. :/

    Criador do tópico WallaceErick

    (@wallaceerick)

    Seria isso no caso.
    Tenho essa página, que mostra um trabalho que desenvolvi (http://50.97.105.174/~walla148/portfolio/azul-fish-farm/), ela tem um campo personalizado com nome ‘Categoria’ e o valor ‘WordPress’.
    Ai quando estou na página so serviço WordPress (http://50.97.105.174/~walla148/servicos/wordpress/), queria q mostrasse todas os trabalhos que estão nessa categoria.
    Com post daria pra fazer, mas eu usei página, então to apanhando. :/

    O código acima está correto, só faltou especificar o valor do campo personalizado no parâmetro value.

    Os campos personalizados trabalham com dois valores, seu nome e seu valor

    key = Categorias, que é o nome do campo que você criou
    value = WordPress, que é o valor dado ao campo Categoria que você criou.

    Não entendi bem o lance das página e posts, mas se você está inserindo seu campos personalizados em páginas valeria a pena adicionar um novo parâmetro em ua consulta que seria

    'post_type' => 'page'

    Caso seja post não precisa usar, mas caso queira o parâmetro seria

    'post_type' => 'post'

    Criador do tópico WallaceErick

    (@wallaceerick)

    Noossa, é verdade. Que falta de atenção.
    Eu acabei fazendo de outro jeito e funcionou:

    <ul id="relacionados">
    		<?php $querydetails = "SELECT wposts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = 'Categoria' AND wpostmeta.meta_value = 'Wordpress' AND wposts.post_type = 'page' ORDER BY wposts.post_date DESC";
    		$pageposts = $wpdb->get_results($querydetails, OBJECT);
    		if ($pageposts): foreach ($pageposts as $post): setup_postdata($post); ?>
    			<li>
    				<figure>
    				<?php the_post_thumbnail(array(50,50)); ?>
    					 <figcaption>
    						<h4><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
    						<p>Postado por <?php the_author(); ?> | <?php the_time('d/m/y'); ?> | <?php comments_popup_link(__('Sem Comentários'), __('1 Comentário'), __('% Comentários'), '', __('Não é permitido comentar!') ); ?></p>
    					</figcaption>
    				</figure>
    			</li>
    		<?php endforeach; endif; ?>
    	</ul>

    Mas vou usar essa sua sugestão, porque o código ta melhor.

    Valeu pela força Myst1010.

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • O tópico ‘Listar páginas relacionadas utilizando um campo personlizado’ está fechado para novas respostas.