web-dev-qa-db-fra.com

Requête de relation de champs personnalisés avancée plus requête à l'intérieur

Je développe actuellement un site, j'ai trois types de messages personnalisés (haut-parleurs, événements, vidéos). Chaque événement a une relation avec les intervenants. Ainsi, lorsqu'un événement est créé, ils sélectionnent les intervenants qui ont pris la parole lors de cet événement. ma page d’événement fonctionne bien et je peux bien appeler les conférenciers. Le problème que je rencontre dans le type de publication personnalisé de mes vidéos lors de la création d’une vidéo indique que l’utilisateur a 2 relations dans lesquelles il sélectionne l’événement auquel il a été enregistré et l’orateur auquel il s’adresse. Donc, sur ma page d'événements sous chaque orateur. Je veux qu'il obtienne leur vidéo pour cet événement. J'ai essayé d'utiliser la méta-requête, mais je n'arrive pas à le faire fonctionner. J'ai posté sur le forum d'ACF sans réponse. Toute aide serait vraiment appréciée. J'ai tout essayé.

http://support.advancedcustomfields.com/forums/topic/nesting-relationship-querys/

Ci-dessus, la publication sur le forum de support de terrain personnalisé avancé.

Voici un bac de pâte de mon events.php

http://Pastebin.com/LB8bdyKj

Voici la section de code,

<?php
$posts = get_field('speakers');
if( $posts ) :
foreach( $posts as $post) :
  setup_postdata($post);
?>
<div class="span_6 speaker">
  <div class="span_5">
    <img src="<?php the_field('speakers_image'); ?>" />
  </div>
  <div class="span_7">
  <h3><?php the_title();?></h3>
  <?php
  $videos = get_posts( array(
    'post_type' => 'videos',
    'meta_query' => array(
      'relation' => 'AND',
      array(
       'key' => 'speaker',
       'value' => get_the_ID()
      ),
      array(
       'key' => 'events',
       'value' => $eventid
      )
    )
  ) );
  $videoquerys = new WP_Query($videos);
  ?>
  <a class="" href="#">View Profile</a>
  </div>
</div>

Ci-dessus, c’est ce que j’ai essayé d’informations entre événement et haut-parleur. Je peux obtenir une réponse correcte en interrogeant le haut-parleur et l’événement et en obtenant la vidéo qui correspond à mon problème.

1
user41522

On dirait que vous utilisez à la fois get_posts() et new WP_Query() - Vous n'avez besoin que de l'un ou de l'autre. Vous utilisez également incorrectement WP_Query() - il recherche un tableau d'arguments, mais vous passez $videos, qui est un tableau d'objets post.

Essaye ça:

<?php

$args = array(
  'post_type' => 'videos',
  'meta_query' => array(
    'relation' => 'AND',
    array(
     'key' => 'speaker',
     'value' => get_the_ID()
    ),
    array(
     'key' => 'events',
     'value' => $eventid
    )
  )
);

$videos = new WP_Query($args);

if($videos->have_posts()) : 
   while($videos->have_posts()) : 
      $videos->the_post();

?>

<!-- STUFF FOR EACH VIDEO HERE -->
<a href="<?php the_permalink(); ?>" ?>"><?php the_title(); ?></a>

<?php

endwhile;
endif;

?>

Non testé. J'espère que ça marche pour toi.

0
pburke