![](/img/trans.png)
[英]How do I add a custom field for subscriptions in the WooCommerce Subscriptions plugin without touching the core files?
[英]How do I show custom WooCommerce Subscriptions data on the frontend for customers subscription details?
我正在使用 WooCommerce 訂閱插件來管理定期訂單。
但我希望我的客戶在他們的訂閱詳細信息頁面上看到我添加到所有新訂閱中的自定義數據。
我為客戶嬰兒姓名添加了一個變量,我將其添加為訂閱數據_baby_name
數據中的 _baby_name ,如下所示:
/**
* Triggered after a new subscription is created.
*
* @since 2.2.22
* @param WC_Subscription $subscription
*/
function action_wcs_create_subscription( $subscription ) {
// Get ID
$subscription_id = $subscription->get_id();
update_post_meta( $subscription_id, '_baby_name', get_current_user_id() );
}
add_action( 'wcs_create_subscription', 'action_wcs_create_subscription', 10, 1 );
出於測試目的,我只是將值設置為get_current_user_id()
。
為了在客戶前端顯示這些自定義數據,我嘗試修改 subscription-details.php 文件:
wp-content/plugins/woocommerce-subscriptions/vendor/woocommerce/subscriptions-core/templates/myaccount/subscription-details.php
我在我的 subscription_details 表的頂部添加了一行,在狀態行上方,如下所示:
<tbody>
<tr>
<td><?php esc_html_e( 'Baby Name', 'woocommerce-subscriptions' ); ?></td>
<td><?php echo esc_html( $subscription.'baby_name' ); ?></td>
</tr>
<tr>
<td><?php esc_html_e( 'Status', 'woocommerce-subscriptions' ); ?></td>
<td><?php echo esc_html( wcs_get_subscription_status_name( $subscription->get_status() ) ); ?></td>
</tr>
但是在我的 Baby Name 新行中,我只獲得了與 $subscriptions 相關的所有數據:
我應該使用什么來代替$subscription.'_baby_name'
來提取_baby_name
的值,並將其顯示在表格中?
由於數據保存為 post meta,您可以使用$subscription->get_meta( '_baby_name', true );
所以你得到:
<tbody>
<tr>
<td><?php esc_html_e( 'Baby Name', 'woocommerce-subscriptions' ); ?></td>
<td><?php echo $subscription->get_meta( '_baby_name', true ); ?></td>
</tr>
<tr>
<td><?php esc_html_e( 'Status', 'woocommerce-subscriptions' ); ?></td>
<td><?php echo esc_html( wcs_get_subscription_status_name( $subscription->get_status() ) ); ?></td>
</tr>
或使用get_post_meta( $subscription->get_id(), '_baby_name', true );
<tbody>
<tr>
<td><?php esc_html_e( 'Baby Name', 'woocommerce-subscriptions' ); ?></td>
<td><?php echo get_post_meta( $subscription->get_id(), '_baby_name', true ); ?></td>
</tr>
<tr>
<td><?php esc_html_e( 'Status', 'woocommerce-subscriptions' ); ?></td>
<td><?php echo esc_html( wcs_get_subscription_status_name( $subscription->get_status() ) ); ?></td>
</tr>
但是,如果您不想編輯模板文件,可以使用wcs_subscription_details_table_before_dates
操作掛鈎:
function action_wcs_subscription_details_table_before_dates( $subscription ) {
echo '<tr><td>';
echo esc_html_e( 'Baby Name', 'woocommerce-subscriptions' );
echo '</td><td>';
echo get_post_meta( $subscription->get_id(), '_baby_name', true );
echo '</td></tr>';
}
add_action( 'wcs_subscription_details_table_before_dates', 'action_wcs_subscription_details_table_before_dates', 10, 1 );
唯一的缺點是新行將顯示在“狀態”行下方,與上方相反
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.