web-dev-qa-db-fra.com

Appel de différents horodatages de messages personnalisés dans une table

J'utilise WordPress pour gérer un site d'événements auquel les gens peuvent s'inscrire s'ils ont un abonnement.

Au bas de chaque événement, si vous êtes administrateur, vous pouvez voir une liste d'invités avec Nom, Email, Tel, Avatar (via BuddyPress) et pour notre information, les détails de votre abonnement.

Les détails de l'abonnement sont stockés sous forme de messages personnalisés. Ce que je veux faire est simplement de les lister, sous forme de date au moment où ils ont commencé leur abonnement.

L'expiration de l'abonnement semble être assez facile car elle est stockée en tant que clé méta, mais je ne parviens pas à afficher les dates de publication des publications pour chaque publication personnalisée appelée.

C’est ce que j’ai fait jusqu’à présent: c’est probablement un peu rude et prêt, mais je ne m’ai appris que PHP au cours du dernier mois écoulé depuis la création du site Web.

<thead>
  <tr>
    <th>User (Full Name)</th>
    <th>Email Address</th>
    <th>Phone</th>
    <th>Subscription</br>Expiry/Renewal</th>
    <th>Subscriber</br> Since</th>
    <th>Photo</th>
  </tr>
</thead>
<tbody>
  <?php foreach($tickets as $ticket) { ?>
    <tr>
      <td><?php echo $ticket['name']; ?>
        <br/>(
          <?php $useremail = $ticket['email'];
              $user = get_user_by( 'email', $useremail );
              $IDuser = $user->ID;
              echo bp_get_profile_field_data( array( 'field'=>'Full (Legal) Name - Not Displayed*','user_id'=>$IDuser));
              ?>)
      </td>
      <td><?php echo $ticket['email']; ?></td>
      <td><?php $useremail = $ticket['email'];
          $user = get_user_by( 'email', $useremail );
          $IDuser = $user->ID;
          $telno = bp_get_profile_field_data( array( 'field'=>'Mobile phone number - Not Displayed*','user_id'=>$IDuser));
          {?><a href="tel:<?php echo $telno;?>"><?php echo $telno; }?></a>
      </td>
      <td><?php $useremail = $ticket['email'];
          $user = get_user_by( 'email', $useremail );
          $IDuser = $user->ID;
          echo getSubscriberType($IDuser);
          $subscriptions = getUserSubscriptions($IDuser);?></br> 
          <?php echo date('d/m/Y',strtotime($subscriptions[0]['expiry'])); ?>
      </td>
      <!-- (not in actual code) - GETING THE USERS FIRST PUBLISHED SUBSCRIPTION?? \/   \/   \/   \/  -->
      <td>
      <?php
          $useremail = $ticket['email'];
          $user = get_user_by( 'email', $useremail );
          $IDuser = $user->ID;
          $subscriptions = getUserSubscriptions($IDuser);
          echo get_the_date('M j, Y', $subscriptions);
          ?>
      </td>
      <!-- (not in actual code) - GETING THE USERS FIRST PUBLISHED SUBSCRIPTION?? /\   /\   /\   /\ -->
      <td><?php $useremail = $ticket['email'];
          $user = get_user_by( 'email', $useremail );
          $IDuser = $user->ID;
          echo get_avatar( $IDuser, 60); ?>
      </td>
  </tr>

Ainsi, le bit entre les commentaires semble indiquer la même date pour tout le monde et non pour le post d’abonnement individuel appelé…. L’appel ci-dessus;

<?php echo date('d/m/Y',strtotime($subscriptions[0]['expiry'])); ?> fonctionne bien mais j'appelle une clé méta spécifique. Autant que je sache, wordpress n'a pas de clé spécifique pour appeler ces données ...?

Si quelqu'un pouvait vous aider, ce serait fantastique, car il existe de nombreuses aides pour l'horodatage des appels sur la page affichée ou pour des identifiants de publication spécifiques, mais rien avec ce style d'appel.

==========================

EDIT: J'ai essayé d'implémenter l'affichage du code dans une réponse en double , mais cela n'a aucun sens - je ne cherche pas à afficher tous les articles sous forme de liste, car il existe de nombreux blogs pour vous aider. . Je souhaite interroger mon abonnement CPT avec l'ID utilisateur trouvé à partir des métadonnées du ticket CPT. La seule chose qui relie les deux CPT est l'ID utilisateur ...

Ce qui me pose problème, c'est comment interroger et faire correspondre les deux messages personnalisés pour enfin donner la première date de publication de l'abonnement. Désolé, c'est un peu long - toute aide serait grandement appréciée.

1
Bysander

OK, donc était beaucoup plus simple que je ne le pensais à la fin et ne comportait pas de requête de requête.

La même chose peut être réalisée comme ceci:

     /*GETING THE USERS FIRST PUBLISHED SUBSCRIPTION?? */
$useremail = $ticket['email'];
$user = get_user_by( 'email', $useremail );
$IDuser = $user->ID;
$args = array(
              'posts_per_page' => 1,
              'post_type' => 'subscription',
              'author' => $IDuser,
              'meta_key' => 'state',
              'meta_value' => 'complete',
              'orderby' => 'date',
              'order' => 'ASC',
              );
$first_post = new WP_Query($args);
//    '<pre>'.print_r($first_post).'</pre>'; // You can use this to check what the query produces to make sure you're on the right track.
if ($first_post->have_posts()) {
    $first_post->the_post();

    the_time('M j, Y');

    wp_reset_postdata();
0
Bysander