【问题标题】:display Woocommerce subscription actions to any of custom page or dashboard向任何自定义页面或仪表板显示 Woocommerce 订阅操作
【发布时间】:2019-10-02 03:50:50
【问题描述】:

我正在使用 WooCommerce 订阅,并尝试在仪表板中为用户创建自定义流程。

当前用户登录 > 仪表板显示,我有自定义代码来显示订阅状态是“活动”还是“暂停”。如果它处于暂停状态,用户当前必须单击查看订阅,然后单击列出的订阅,然后单击操作部分中的续订。

我想移动此操作按钮以将“暂停”订阅从 subscription-details.php 文件中更新到 dashboard.php 文件中以减少这些步骤。

这是我发现的与更新操作按钮有关的 sn-p:

<?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 ); ?>

我试图将它引入到dashboard.php 文件中,但是我收到一条错误消息,指出该站点遇到了技术问题。

关于如何将更新操作按钮带入dashboard.php 文件的任何想法?

提前感谢您的帮助!!!

【问题讨论】:

    标签: php wordpress woocommerce-subscriptions


    【解决方案1】:

    如果您想在自定义页面或仪表板中显示任何操作,请使用以下代码并根据您的要求设置操作

    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/

    【讨论】:

    • 感谢您抽出宝贵时间回复,非常感谢,但我已经知道如何编辑我的帐户页面...我想从订阅详细信息中添加“续订”订阅按钮。 php 页面,我认为是提供的 sn-p,到 my-account dashboard.php 页面。
    • @Kiki 检查更新的答案,我添加了挂钩以显示取消按钮,您可以对任何自定义操作执行相同操作
    • @JitendraPopat,您提到“根据您的要求设置操作”。在那种情况下,我如何获得 $subscription 变量?您是否实现了在自定义页面上列出所有订阅?
    • @Gangesh 是的,我实现了所有订阅的列表以及包含订阅详细信息的用户计划
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多