отображать действия подписки Woocommerce на любую пользовательскую страницу или панель инструментов - PullRequest
0 голосов
/ 02 октября 2019

Я использую подписки WooCommerce и пытаюсь создать пользовательский поток в панели управления для пользователя.

В настоящее время пользователь входит в систему> на панели мониторинга, у меня есть специальный код, чтобы показать, если статус подписки "активен"или "на удержании". Если он находится в режиме ожидания, пользователь в настоящее время должен щелкнуть по просмотру подписки, затем щелкнуть по подписке в списке и затем нажать «Обновить» в разделе действий.

Я хочу переместить эту кнопку действий, чтобы обновить «on-удерживайте "подписку из файла subscription-details.php и в файле dashboard.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 ); ?>

Я пытался перенести это в файл dashboard.php, однако я получаю сообщение об ошибке, говорящее о том, что сайт испытывает технические трудности.

Любые идеи о том, как я мог бы вместо этого перенести эту кнопку обновления в файл dashboard.php?

Заранее спасибо за любую помощь !!!

1 Ответ

0 голосов
/ 02 октября 2019

Если вы хотите показать какое-либо действие на своей пользовательской странице или панели инструментов, используйте приведенный ниже код и установите действие в соответствии с вашими требованиями

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/

...