2017-08-29 93 views
2

我正在使用Woocommerce订阅,并且我想生成一个表格,显示所有活动订阅者及其相关用户信息。以下代码只是拉起所有用户...任何想法如何正确地做到这一点?谢谢! :)WooCommerce订阅 - 获取活动订阅者信息以在表中显示

<table style="border-collapse: collapse;" border="0" width="450" cellspacing="0" cellpadding="0"><colgroup> <col span="5" width="75" /> </colgroup> 
<tbody>  
<tr> 
<td width="75"><strong>Last Name</strong></td> 
<td width="75" height="13"><strong>First Name</strong></td> 
<td width="75"><strong>Company</strong></td> 
<td width="95"><strong>Phone</strong></td> 
<td width="75"><strong>Email</strong></td> 
</tr> 

<?php 
$args = array(
    'post_type' => 'shop_subscription', // Subscription post type 
    'post_status' => 'wc-active', // Active subscription 
    'order' => 'ASC', 
    'meta_key' => 'last_name', 
    'orderby' => 'meta_value', 
    'numberposts' => -1, 

); 

// The Query 

$user_query = new WP_User_Query($args); 


// User Loop 
if (! empty($user_query->results)) { 
    foreach ($user_query->results as $user) { 

     echo ' 
<tr> 

<td height="13">' . $user->last_name . '</td> <td>' . $user->first_name . '</td> <td>' . $user->billing_company . '</td><td>' . $user->billing_phone . '</td> <td>' . $user->user_email . '</td></tr>' ; 
    } 
} else { 
    echo 'No users found.'; 
} 
?> 


</tbody> 
</table> 

回答

1

您可以用自定义的SQL查询做这样(更新)

<?php 
    global $wpdb; 
    $results = $wpdb->get_results(" 
     SELECT DISTINCT postmeta.meta_value as user_id, postmeta2.meta_value as first_name, postmeta3.meta_value as last_name, 
     postmeta4.meta_value as company, postmeta5.meta_value as phone, postmeta6.meta_value as email 
     FROM {$wpdb->prefix}postmeta as postmeta 
     INNER JOIN {$wpdb->prefix}posts as posts ON postmeta.post_id = posts.ID 
     INNER JOIN {$wpdb->prefix}postmeta as postmeta2 ON postmeta2.post_id = posts.ID 
     INNER JOIN {$wpdb->prefix}postmeta as postmeta3 ON postmeta3.post_id = posts.ID 
     INNER JOIN {$wpdb->prefix}postmeta as postmeta4 ON postmeta4.post_id = posts.ID 
     INNER JOIN {$wpdb->prefix}postmeta as postmeta5 ON postmeta5.post_id = posts.ID 
     INNER JOIN {$wpdb->prefix}postmeta as postmeta6 ON postmeta6.post_id = posts.ID 
     WHERE posts.post_type LIKE 'shop_subscription' 
     AND posts.post_status LIKE 'wc-active' 
     AND postmeta.meta_key = '_customer_user' 
     AND postmeta2.meta_key = '_billing_first_name' 
     AND postmeta3.meta_key = '_billing_last_name' 
     AND postmeta4.meta_key = '_billing_company' 
     AND postmeta5.meta_key = '_billing_phone' 
     AND postmeta6.meta_key = '_billing_email' 
     ORDER BY postmeta2.meta_key ASC 
    "); 
?> 
<table style="border-collapse: collapse;" border="0" width="450" cellspacing="0" cellpadding="0"> 
    <tbody> 
     <tr> 
      <th height="13"><strong>ID</strong></th> 
      <th><strong>Last Name</strong></th> 
      <th><strong>First Name</strong></th> 
      <th><strong>Company</strong></th> 
      <th><strong>Phone</strong></th> 
      <th><strong>Email</strong></th> 
     </tr> 
<?php 
foreach ($results as $result): 
?> 
     <tr> 
      <td height="13"><?php echo $result->user_id; ?></td> 
      <td><?php echo $result->last_name; ?></td> 
      <td><?php echo $result->first_name; ?></td> 
      <td><?php echo $result->company; ?></td> 
      <td><?php echo $result->phone; ?></td> 
      <td><?php echo $result->email; ?></td> 
     </tr> 
<?php 
endforeach; 
?> 
    </tbody> 
</table> 

代码放在您的活动子主题的function.php文件(或主题)或者也在任何插件文件中。

已测试和工作。你会得到这样的东西:

enter image description here

+0

太棒了!谢谢!!自从名字在名字栏中拉出来之后,我做了一些更改,我需要按姓氏字母顺序组织表格。我会在下面发布更新的代码。 –

+1

对不起@LoicTheAztec我是新的,我不知道正确的协议!谢谢你的真棒回答! –