Как изменить роли пользователя при нажатии на пользовательскую кнопку? - PullRequest
0 голосов
/ 17 января 2019

Мне нужно изменить кнопку «Добавить в корзину» для определенных продуктов, уже купленных, на кнопку «Выбрать», которая меняет роль пользователя в соответствии с конкретным продуктом.

Когда пользователь совершает покупку в магазине, я настраиваю ее так, чтобы он получал роль в соответствии с приобретенным идентификатором продукта. Если они приобретают другой продукт, их старая роль удаляется, а новая роль добавляется в соответствии с новым идентификатором продукта.

После однократной покупки пользователи должны иметь постоянный доступ к смене ролей по своему усмотрению без выкупа. Мне успешно удалось изменить кнопку «Добавить в корзину», чтобы сказать «Выбрать», и я могу перенаправить на новую ссылку, но мне все еще нужно изменить роль пользователя, когда он щелкает по ней, возможно, на связанной странице.

// Changing the Add to Cart for specific purchased products

add_filter( 'woocommerce_loop_add_to_cart_link', 'customizing_add_to_cart_button', 10, 2 );
function customizing_add_to_cart_button( $link, $product ){

    $bought = false;

    if( is_user_logged_in() ){

        $customer_orders = get_posts( array(
            'numberposts' => -1,
            'meta_key'    => '_customer_user',
            'meta_value'  => get_current_user_id(),
            'post_type'   => 'shop_order', // WC orders post type
            'post_status' => 'wc-completed' // Only orders with status "completed"
        ) );

        // Going through each current customer orders
        foreach ( $customer_orders as $customer_order ) {
            $order = wc_get_order( $customer_order->ID );
            // Going through each current customer order items
            foreach($order->get_items() as $item_id => $item_values){
                if($item_values['product_id'] == $product->id){
                    $bought = true;
                    break;
                }
            }
        }
    }

    if($bought){

         // for the product ID 317 
        if( $product->id == 317 ){
            $add_to_cart_url = site_url('/members/me/profile/collection');
            $button_text =  __('Select 317', 'woocommerce');

        }

        // for the product ID 311 
        if( $product->id == 311){
            $add_to_cart_url = site_url('/members/me/profile/collection');
            $button_text =  __('Select 311', 'woocommerce');

        }


    } else {

        $add_to_cart_url = $product->add_to_cart_url();
        $button_text =  $product->add_to_cart_text();

    }

    $link = sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" data-quantity="%s" class="button product_type_%s">%s</a>',
        esc_url( $add_to_cart_url ),
        esc_attr( $product->id ),
        esc_attr( $product->get_sku() ),
        esc_attr( isset( $quantity ) ? $quantity : 1 ),
        esc_attr( $product->product_type ),
        esc_html( $button_text )
    );

    return $link;
}

Я думаю, что может потребоваться отдельная функция, которая позволяет удалить текущую роль продукта и добавить новую на целевой странице в зависимости от того, какая кнопка продукта была использована. Я не лучший в php, первый проект, поэтому дайте мне знать, если есть способ достичь этого! Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...