web-dev-qa-db-ja.com

テーブルで異なるカスタムポストタイムスタンプを呼び出す

WordPressを使用して、サブスクリプションがある場合にサインダウンできるイベントサイトを実行します。

各イベントの下部に、管理者の場合、名前、電子メール、電話、アバター(BuddyPress経由)のゲストリストと、サブスクリプションの詳細が表示されます。

サブスクリプションの詳細はカスタムポストとして保存されます。最初にサブスクリプションを開始したときの日付形式で、私がやりたいことは単にリストです。

サブスクリプションの有効期限はメタキーとして保存されているため非常に簡単に思えますが、呼び出された各カスタム投稿の個々の投稿公開日を表示することはできません。

これは私がこれまでに持っているものです。おそらく少しラフで準備ができていますが、ウェブサイトが開設されて以来、先月かそこらでPHPを教えただけです。

<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>

したがって、コメント間のビットは、それが呼び出される個々のサブスクリプション投稿ではなく、全員に同じ日付を表示するようです。..上記の呼び出し。

<?php echo date('d/m/Y',strtotime($subscriptions[0]['expiry'])); ?>は正常に機能しますが、特定のメタキーを呼び出しています。私の知る限り、wordpressにはこのデータを呼び出すための特定のキーがありません...?

誰かがそれを手伝うことができたら、あなたがいるページのタイムスタンプを呼び出すか、特定の投稿IDのためにたくさんの助けがありますが、このスタイルの呼び出しでは何もありません。

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

編集:duplicate答えでコードショーを実装しようとしましたが、意味がありません-たくさんあるので、すべての投稿をリストとして表示するつもりはありませんそれを支援するブログの。チケットCPTのメタデータから取得してユーザーIDを見つけて、サブスクリプションCPTをクエリします。 2つのCPTをリンクする唯一のものはUserIDです...

私が苦労しているのは、2つのカスタム投稿を照会して照合し、最終的にサブスクリプションの最初の公開日を指定する方法です。申し訳ありませんが、少し時間がかかりました-どんな助けも大歓迎です。

1
Bysander

結構思ったよりもずっと簡単で、query of queryは含まれませんでした。

これは、次のようにしても達成できます。

     /*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