我正在使用WooCommerce订阅,并尝试在dhasboard中为用户创建自定义流程。
目前用户登录>仪表板显示,我有自定义代码来显示订阅状态是"活动"还是"暂停"。如果处于暂停状态,则用户当前必须单击"查看订阅",然后单击列出的订阅,然后单击操作部分中的"续订"。
我想将此操作按钮从订阅详细信息.php文件转到仪表板.php文件中续订"暂停"订阅,以减少这些步骤。
以下是我发现的与续订操作按钮相关的片段:
<?php do_action( 'woocommerce_subscription_before_actions', $subscription ); ?>
<?php $actions = wcs_get_all_user_actions_for_subscription( $subscription, get_current_user_id() ); ?>
<?php if ( ! empty( $actions ) ) : ?>
<tr>
<td><?php esc_html_e( 'Actions', 'woocommerce-subscriptions' ); ?></td>
<td>
<?php foreach ( $actions as $key => $action ) : ?>
<a href="<?php echo esc_url( $action['url'] ); ?>" class="button <?php echo sanitize_html_class( $key ) ?>"><?php echo esc_html( $action['name'] ); ?></a>
<?php endforeach; ?>
</td>
</tr>
<?php endif; ?>
<?php do_action( 'woocommerce_subscription_after_actions', $subscription ); ?>
我试图将其带入仪表板.php文件,但是我收到一条错误消息,指出该站点遇到技术问题。
关于如何将此续订操作按钮引入仪表板.php文件的任何想法?
提前感谢您的任何帮助!!
如果要在自定义页面或仪表板中显示任何操作,请使用以下代码并根据您的要求设置操作
function addCancelButton($subscription) {
$actions = wcs_get_all_user_actions_for_subscription( $subscription, get_current_user_id() );
if(!empty($actions)){
foreach ( $actions as $key => $action ){
if(strtolower($action['name']) == "cancel"){
$cancelLink = esc_url( $action['url'] );
echo "<a href='$cancelLink' class='button cancel'>".$action['name']."</a>";
}
}
}
}
add_action( 'woocommerce_my_subscriptions_actions', 'addCancelButton', 10 );
如果您想编辑"我的帐户"页面,那么我建议您在您的孩子主题中使用此钩子
woocommerce_account_dashboard
这是相同的代码
add_action( 'woocommerce_account_dashboard','add_account_content_kiki' );
function add_account_content_kiki() {
if( has_active_subscription() ){ // Current user has an active subscription
echo '<div class="woocommerce-message woocommerce-message--info woocommerce-Message woocommerce-Message--info woocommerce-info"><a class="woocommerce-Button button" href="www.google.com">Test Now</a>Test link - shop now</div>';
// Example of displaying something
echo 'You have active subscription';
}
}
您还必须在函数文件中添加此函数
function has_active_subscription( $user_id='' ) {
// When a $user_id is not specified, get the current user Id
if( '' == $user_id && is_user_logged_in() )
$user_id = get_current_user_id();
// User not logged in we return false
if( $user_id == 0 )
return false;
return wcs_user_has_subscription( $user_id, '', 'active' );
}
钩子参考 - https://docs.woocommerce.com/wc-apidocs/hook-docs.html
您可以从这里使用的所有钩子进行求爱商务我的帐户页面 - https://businessbloomer.com/woocommerce-visual-hook-guide-account-pages/