WooCommerce订阅 - 获取活动订阅者信息以在表中显示
问题描述:
我正在使用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>
答
您可以用自定义的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文件(或主题)或者也在任何插件文件中。
已测试和工作。你会得到这样的东西:
太棒了!谢谢!!自从名字在名字栏中拉出来之后,我做了一些更改,我需要按姓氏字母顺序组织表格。我会在下面发布更新的代码。 –
对不起@LoicTheAztec我是新的,我不知道正确的协议!谢谢你的真棒回答! –