/** * WooCommerce Account Functions * * Functions for account specific things. * * @package WooCommerce\Functions * @version 2.6.0 */ use Automattic\WooCommerce\Enums\OrderStatus; defined( 'ABSPATH' ) || exit; /** * Returns the url to the lost password endpoint url. * * @param string $default_url Default lost password URL. * @return string */ function wc_lostpassword_url( $default_url = '' ) { // Avoid loading too early. if ( ! did_action( 'init' ) ) { return $default_url; } // Don't change the admin form. if ( did_action( 'login_form_login' ) ) { return $default_url; } // Don't redirect to the woocommerce endpoint on global network admin lost passwords. if ( is_multisite() && isset( $_GET['redirect_to'] ) && false !== strpos( wp_unslash( $_GET['redirect_to'] ), network_admin_url() ) ) { // WPCS: input var ok, sanitization ok, CSRF ok. return $default_url; } $wc_account_page_url = wc_get_page_permalink( 'myaccount' ); $wc_account_page_exists = wc_get_page_id( 'myaccount' ) > 0; $lost_password_endpoint = get_option( 'woocommerce_myaccount_lost_password_endpoint' ); if ( $wc_account_page_exists && ! empty( $lost_password_endpoint ) ) { return wc_get_endpoint_url( $lost_password_endpoint, '', $wc_account_page_url ); } else { return $default_url; } } add_filter( 'lostpassword_url', 'wc_lostpassword_url', 10, 1 ); /** * Get the link to the edit account details page. * * @return string */ function wc_customer_edit_account_url() { $edit_account_url = wc_get_endpoint_url( 'edit-account', '', wc_get_page_permalink( 'myaccount' ) ); return apply_filters( 'woocommerce_customer_edit_account_url', $edit_account_url ); } /** * Get the edit address slug translation. * * @param string $id Address ID. * @param bool $flip Flip the array to make it possible to retrieve the values ​​from both sides. * * @return string Address slug i18n. */ function wc_edit_address_i18n( $id, $flip = false ) { $slugs = apply_filters( 'woocommerce_edit_address_slugs', array( 'billing' => sanitize_title( _x( 'billing', 'edit-address-slug', 'woocommerce' ) ), 'shipping' => sanitize_title( _x( 'shipping', 'edit-address-slug', 'woocommerce' ) ), ) ); if ( $flip ) { $slugs = array_flip( $slugs ); } if ( ! isset( $slugs[ $id ] ) ) { return $id; } return $slugs[ $id ]; } /** * Get My Account menu items. * * @since 2.6.0 * @return array */ function wc_get_account_menu_items() { $endpoints = array( 'orders' => get_option( 'woocommerce_myaccount_orders_endpoint', 'orders' ), 'downloads' => get_option( 'woocommerce_myaccount_downloads_endpoint', 'downloads' ), 'edit-address' => get_option( 'woocommerce_myaccount_edit_address_endpoint', 'edit-address' ), 'payment-methods' => get_option( 'woocommerce_myaccount_payment_methods_endpoint', 'payment-methods' ), 'edit-account' => get_option( 'woocommerce_myaccount_edit_account_endpoint', 'edit-account' ), 'customer-logout' => get_option( 'woocommerce_logout_endpoint', 'customer-logout' ), ); $items = array( 'dashboard' => __( 'Dashboard', 'woocommerce' ), 'orders' => __( 'Orders', 'woocommerce' ), 'downloads' => __( 'Downloads', 'woocommerce' ), 'edit-address' => _n( 'Address', 'Addresses', ( 1 + (int) wc_shipping_enabled() ), 'woocommerce' ), 'payment-methods' => __( 'Payment methods', 'woocommerce' ), 'edit-account' => __( 'Account details', 'woocommerce' ), 'customer-logout' => __( 'Log out', 'woocommerce' ), ); // Remove missing endpoints. foreach ( $endpoints as $endpoint_id => $endpoint ) { if ( empty( $endpoint ) ) { unset( $items[ $endpoint_id ] ); } } // Check if payment gateways support add new payment methods. if ( isset( $items['payment-methods'] ) ) { $support_payment_methods = false; foreach ( WC()->payment_gateways->get_available_payment_gateways() as $gateway ) { if ( $gateway->supports( 'add_payment_method' ) || $gateway->supports( 'tokenization' ) ) { $support_payment_methods = true; break; } } if ( ! $support_payment_methods ) { unset( $items['payment-methods'] ); } } return apply_filters( 'woocommerce_account_menu_items', $items, $endpoints ); } /** * Find current item in account menu. * * @since 9.3.0 * @param string $endpoint Endpoint. * @return bool */ function wc_is_current_account_menu_item( $endpoint ) { global $wp; $current = isset( $wp->query_vars[ $endpoint ] ); if ( 'dashboard' === $endpoint && ( isset( $wp->query_vars['page'] ) || empty( $wp->query_vars ) ) ) { $current = true; // Dashboard is not an endpoint, so needs a custom check. } elseif ( 'orders' === $endpoint && isset( $wp->query_vars['view-order'] ) ) { $current = true; // When looking at individual order, highlight Orders list item (to signify where in the menu the user currently is). } elseif ( 'payment-methods' === $endpoint && isset( $wp->query_vars['add-payment-method'] ) ) { $current = true; } return $current; } /** * Get account menu item classes. * * @since 2.6.0 * @param string $endpoint Endpoint. * @return string */ function wc_get_account_menu_item_classes( $endpoint ) { $classes = array( 'woocommerce-MyAccount-navigation-link', 'woocommerce-MyAccount-navigation-link--' . $endpoint, ); if ( wc_is_current_account_menu_item( $endpoint ) ) { $classes[] = 'is-active'; } $classes = apply_filters( 'woocommerce_account_menu_item_classes', $classes, $endpoint ); return implode( ' ', array_map( 'sanitize_html_class', $classes ) ); } /** * Get account endpoint URL. * * @since 2.6.0 * @param string $endpoint Endpoint. * @return string */ function wc_get_account_endpoint_url( $endpoint ) { if ( 'dashboard' === $endpoint ) { return wc_get_page_permalink( 'myaccount' ); } $url = wc_get_endpoint_url( $endpoint, '', wc_get_page_permalink( 'myaccount' ) ); if ( 'customer-logout' === $endpoint ) { return wp_nonce_url( $url, 'customer-logout' ); } return $url; } /** * Get My Account > Orders columns. * * @since 2.6.0 * @return array */ function wc_get_account_orders_columns() { /** * Filters the array of My Account > Orders columns. * * @since 2.6.0 * @param array $columns Array of column labels keyed by column IDs. */ return apply_filters( 'woocommerce_account_orders_columns', array( 'order-number' => __( 'Order', 'woocommerce' ), 'order-date' => __( 'Date', 'woocommerce' ), 'order-status' => __( 'Status', 'woocommerce' ), 'order-total' => __( 'Total', 'woocommerce' ), 'order-actions' => __( 'Actions', 'woocommerce' ), ) ); } /** * Get My Account > Downloads columns. * * @since 2.6.0 * @return array */ function wc_get_account_downloads_columns() { $columns = apply_filters( 'woocommerce_account_downloads_columns', array( 'download-product' => __( 'Product', 'woocommerce' ), 'download-remaining' => __( 'Downloads remaining', 'woocommerce' ), 'download-expires' => __( 'Expires', 'woocommerce' ), 'download-file' => __( 'Download', 'woocommerce' ), 'download-actions' => ' ', ) ); if ( ! has_filter( 'woocommerce_account_download_actions' ) ) { unset( $columns['download-actions'] ); } return $columns; } /** * Get My Account > Payment methods columns. * * @since 2.6.0 * @return array */ function wc_get_account_payment_methods_columns() { return apply_filters( 'woocommerce_account_payment_methods_columns', array( 'method' => __( 'Method', 'woocommerce' ), 'expires' => __( 'Expires', 'woocommerce' ), 'actions' => ' ', ) ); } /** * Get My Account > Payment methods types * * @since 2.6.0 * @return array */ function wc_get_account_payment_methods_types() { return apply_filters( 'woocommerce_payment_methods_types', array( 'cc' => __( 'Credit card', 'woocommerce' ), 'echeck' => __( 'eCheck', 'woocommerce' ), ) ); } /** * Get account orders actions. * * @since 3.2.0 * @param int|WC_Order $order Order instance or ID. * @return array */ function wc_get_account_orders_actions( $order ) { if ( ! is_object( $order ) ) { $order_id = absint( $order ); $order = wc_get_order( $order_id ); } $actions = array( 'pay' => array( 'url' => $order->get_checkout_payment_url(), 'name' => __( 'Pay', 'woocommerce' ), /* translators: %s: order number */ 'aria-label' => sprintf( __( 'Pay for order %s', 'woocommerce' ), $order->get_order_number() ), ), 'view' => array( 'url' => $order->get_view_order_url(), 'name' => __( 'View', 'woocommerce' ), /* translators: %s: order number */ 'aria-label' => sprintf( __( 'View order %s', 'woocommerce' ), $order->get_order_number() ), ), 'cancel' => array( 'url' => $order->get_cancel_order_url( wc_get_page_permalink( 'myaccount' ) ), 'name' => __( 'Cancel', 'woocommerce' ), /* translators: %s: order number */ 'aria-label' => sprintf( __( 'Cancel order %s', 'woocommerce' ), $order->get_order_number() ), ), ); if ( ! $order->needs_payment() ) { unset( $actions['pay'] ); } /** * Filters the valid order statuses for cancel action. * * @since 3.2.0 * * @param array $statuses_for_cancel Array of valid order statuses for cancel action. * @param WC_Order $order Order instance. */ $statuses_for_cancel = apply_filters( 'woocommerce_valid_order_statuses_for_cancel', array( OrderStatus::PENDING, OrderStatus::FAILED ), $order ); if ( ! in_array( $order->get_status(), $statuses_for_cancel, true ) ) { unset( $actions['cancel'] ); } return apply_filters( 'woocommerce_my_account_my_orders_actions', $actions, $order ); } /** * Get account formatted address. * * @since 3.2.0 * @param string $address_type Type of address; 'billing' or 'shipping'. * @param int $customer_id Customer ID. * Defaults to 0. * @return string */ function wc_get_account_formatted_address( $address_type = 'billing', $customer_id = 0 ) { $getter = "get_{$address_type}"; $address = array(); if ( 0 === $customer_id ) { $customer_id = get_current_user_id(); } $customer = new WC_Customer( $customer_id ); if ( is_callable( array( $customer, $getter ) ) ) { $address = $customer->$getter(); unset( $address['email'], $address['tel'] ); } return WC()->countries->get_formatted_address( apply_filters( 'woocommerce_my_account_my_address_formatted_address', $address, $customer->get_id(), $address_type ) ); } /** * Returns an array of a user's saved payments list for output on the account tab. * * @since 2.6 * @param array $list List of payment methods passed from wc_get_customer_saved_methods_list(). * @param int $customer_id The customer to fetch payment methods for. * @return array Filtered list of customers payment methods. */ function wc_get_account_saved_payment_methods_list( $list, $customer_id ) { $payment_tokens = WC_Payment_Tokens::get_customer_tokens( $customer_id ); foreach ( $payment_tokens as $payment_token ) { $delete_url = wc_get_endpoint_url( 'delete-payment-method', $payment_token->get_id() ); $delete_url = wp_nonce_url( $delete_url, 'delete-payment-method-' . $payment_token->get_id() ); $set_default_url = wc_get_endpoint_url( 'set-default-payment-method', $payment_token->get_id() ); $set_default_url = wp_nonce_url( $set_default_url, 'set-default-payment-method-' . $payment_token->get_id() ); $type = strtolower( $payment_token->get_type() ); $list[ $type ][] = array( 'method' => array( 'gateway' => $payment_token->get_gateway_id(), ), 'expires' => esc_html__( 'N/A', 'woocommerce' ), 'is_default' => $payment_token->is_default(), 'actions' => array( 'delete' => array( 'url' => $delete_url, 'name' => esc_html__( 'Delete', 'woocommerce' ), ), ), ); $key = key( array_slice( $list[ $type ], -1, 1, true ) ); if ( ! $payment_token->is_default() ) { $list[ $type ][ $key ]['actions']['default'] = array( 'url' => $set_default_url, 'name' => esc_html__( 'Make default', 'woocommerce' ), ); } $list[ $type ][ $key ] = apply_filters( 'woocommerce_payment_methods_list_item', $list[ $type ][ $key ], $payment_token ); } return $list; } add_filter( 'woocommerce_saved_payment_methods_list', 'wc_get_account_saved_payment_methods_list', 10, 2 ); /** * Controls the output for credit cards on the my account page. * * @since 2.6 * @param array $item Individual list item from woocommerce_saved_payment_methods_list. * @param WC_Payment_Token $payment_token The payment token associated with this method entry. * @return array Filtered item. */ function wc_get_account_saved_payment_methods_list_item_cc( $item, $payment_token ) { if ( 'cc' !== strtolower( $payment_token->get_type() ) ) { return $item; } $card_type = $payment_token->get_card_type(); $item['method']['last4'] = $payment_token->get_last4(); $item['method']['brand'] = ( ! empty( $card_type ) ? ucwords( str_replace( '_', ' ', $card_type ) ) : esc_html__( 'Credit card', 'woocommerce' ) ); $item['expires'] = $payment_token->get_expiry_month() . '/' . substr( $payment_token->get_expiry_year(), -2 ); return $item; } add_filter( 'woocommerce_payment_methods_list_item', 'wc_get_account_saved_payment_methods_list_item_cc', 10, 2 ); /** * Controls the output for eChecks on the my account page. * * @since 2.6 * @param array $item Individual list item from woocommerce_saved_payment_methods_list. * @param WC_Payment_Token $payment_token The payment token associated with this method entry. * @return array Filtered item. */ function wc_get_account_saved_payment_methods_list_item_echeck( $item, $payment_token ) { if ( 'echeck' !== strtolower( $payment_token->get_type() ) ) { return $item; } $item['method']['last4'] = $payment_token->get_last4(); $item['method']['brand'] = esc_html__( 'eCheck', 'woocommerce' ); return $item; } add_filter( 'woocommerce_payment_methods_list_item', 'wc_get_account_saved_payment_methods_list_item_echeck', 10, 2 ); Possu nettikasino Suomessa mobiilisovellus ja käytettävyys.391 – 3B OF SLk

Possu nettikasino Suomessa mobiilisovellus ja käytettävyys.391

Содержимое

Possu nettikasino Suomessa – mobiilisovellus ja käytettävyys

possu casino on yksi Suomen suosituimmista nettikasinoista, joka on kehittynyt erityisesti suomalaisille pelaajille. Tämä nettikasino on suunniteltu tarjoamaan pelaajille laadukasta pelikokemusta, joka on saatavissa myös mobiililaitteilla.

Possu Casino on lisäksi tunnettu erinomaisesta käytettävyydestään, joka on tärkeä osa pelaajan kokemusta. Käytettävyyden tärkeys on siinä, että pelaaja voi pelata peliä helposti ja nopeasti, ilman ongelmia.

Possu Casino on myös tunnettu laajasta pelivalikoimastaan, joka sisältää monia eri lajien pelejä, kuten pöytäpelejä, kolikkopelejä ja videopokereita. Pelivalikoima on aina päivitetty, jotta pelaaja voi löytää uusia pelejä.

Possu Casino on lisäksi tunnettu erinomaisesta tukijärjestelmästään, joka on saatavissa 24/7. Tukijärjestelmä on tärkeä osa pelaajan kokemusta, jotta pelaaja voi saada apua, jos hänellä on ongelmia.

Possu Casino on myös tunnettu erinomaisesta bonusjärjestelmästään, joka on suunniteltu tarjoamaan pelaajille lisää arvoa. Bonusjärjestelmä on tärkeä osa pelaajan kokemusta, jotta pelaaja voi saada lisää rahaa peliin.

Possu Casino on yksi Suomen suosituimmista nettikasinoista, joka on kehittynyt erityisesti suomalaisille pelaajille. Possu Casino on lisäksi tunnettu erinomaisesta käytettävyydestään, joka on tärkeä osa pelaajan kokemusta.

Mobiilisovelluksen kehittäminen

Possu Casino on kehittänyt mobiilisovelluksen, joka mahdollistaa pelaajien pelata kasinoa käyttäen älylaitetta. Tämä on tärkeää, sillä moni pelaaja haluaa pelata kasinoa missä tahansa ja milloin tahansa.

Mobiilisovelluksen kehittämisessä on otettu huomioon seuraavat asiat:

  • Puoli-mobiilisovelluksen kehittäminen
  • Mobiilisovelluksen testaus
  • Mobiilisovelluksen julkaisu

Puolessa-mobiilisovelluksen kehittämisessä on otettu huomioon seuraavat asiat:

  • Puoli-mobiilisovelluksen rakenne
  • Puoli-mobiilisovelluksen toiminnallisuus
  • Puoli-mobiilisovelluksen testaus
  • Mobiilisovelluksen testaus on tärkeää, sillä se varmistaa, että sovellus toimii oikein ja ettei ole virheitä. Testauksessa on käytetty seuraavia menetelmiä:

    • Manuaalinen testaus
    • Automaattinen testaus
    • Testaus eri laitteilla

    Mobiilisovelluksen julkaisu on viimeinen vaihe kehittämisprosessissa. Tämä on tärkeää, sillä se mahdollistaa pelaajien käyttämään sovellusta.

    Possu Casino on kehittänyt mobiilisovelluksen, joka on saatavilla kaikille Possu Casino -asiakasille. Mobiilisovelluksen avulla pelaajat voivat pelata kasinoa missä tahansa ja milloin tahansa. Possu Casino on tärkeä, sillä se tarjoaa pelaajille mahdollisuuden pelata kasinoa missä tahansa ja milloin tahansa.

    Käyttäytyvyyden tärkeys

    Käyttäytyvyyden tärkeys on tärkeä osa Possu Casinon toimintaa. Meidän tavoitteemme on tarjota asiakkaillemme parhaat mahdolliset kokemukset ja palvelut. Tämä tärkeä osa on myös yksi syy, miksi Possu Casino on yksi Suomen suosituimmista nettikasinoista.

    Possu Casinon käyttäytyvyyden tärkeys näkyy monissa eri asioissa. Esimerkiksi, meidän asiakaspalvelumme on aina valmiina auttamaan ja vastaamaan kysymyksiin. Meidän tavoitteemme on, että asiakkaat voisivat kokea, että heillä on aina jokin, joka auttaa heitä.

    Käyttäytyvyyden tärkeys Possu Casinon palveluissa

    Käyttäytyvyyden tärkeys näkyy myös Possu Casinon palveluissa. Esimerkiksi, meidän kasinohuoneessa on aina tarjolla uusia peliä ja bonuksia. Meidän tavoitteemme on, että asiakkaat voisivat kokea, että heillä on aina jokin, joka yllättää heitä.

    Possu Casinon käyttäytyvyyden tärkeys on myös yksi syy, miksi meidän asiakkaat palvovat meitä. He tietävät, että heillä on aina jokin, joka auttaa heitä, ja että heillä on aina jokin, joka yllättää heitä.

    Possu Casinon käyttäytyvyyden tärkeys on tärkeä osa meidän toimintaa. Meidän tavoitteemme on, että asiakkaat voisivat kokea, että heillä on aina jokin, joka auttaa heitä, ja että heillä on aina jokin, joka yllättää heitä.

    Possu nettikasino mobiilisovelluksen ominaisuudet

    Possu nettikasino on yksi Suomen suosituimmista nettikasinoista, ja sen mobiilisovellus on erityisesti suunnattu mobiililaitteille. Tämä tarkoittaa, että voit pelata Possua missä ja milloin tahansa, kunhan sinulla on mobiililaitteisto.

    Possu nettikasino mobiilisovelluksessa on useita erilaisia ominaisuuksia, jotka tekevät pelistä entistä mukavampaa. Esimerkiksi, voit pelata useita pelejä kerrallaan, ja voit myös seurata peliäsi eteenpäin, vaikka et ole paikalla.

    Possu nettikasino mobiilisovelluksen eri ominaisuuksia

    Mobiilisovelluksessa on useita erilaisia pelejä, kuten kolikkopelejä, pöytäpelejä ja videopokereita.

    Voit pelata useita pelejä kerrallaan, ja voit myös seurata peliäsi eteenpäin, vaikka et ole paikalla.

    Mobiilisovelluksessa on myös eri tyyppisiä bonusseja, jotka voit käyttää peliäsi eteenpäin.

    Voit myös tehdä tilinumeroa, jotta voit pelata Possua missä tahansa.

    Possu nettikasino mobiilisovelluksessa on myös eri tyyppisiä maksutapoja, jotka voit käyttää peliäsi eteenpäin.

    Possu nettikasino on myös erityisesti suunnattu asiakkaille, jotka etsivät mukavaa pelikokemusta. Possu nettikasino mobiilisovelluksessa on useita erilaisia ominaisuuksia, jotka tekevät pelistä entistä mukavampaa. Esimerkiksi, voit pelata useita pelejä kerrallaan, ja voit myös seurata peliäsi eteenpäin, vaikka et ole paikalla.

    Käyttettävyyden parantaminen

    Käyttettävyyden parantaminen on tärkeä osa possucasino-palveluita. Possu casino on suunniteltu käyttäjäystävälliseksi, jotta pelaajat voivat keskittyä peliin eikä teknisiin ongelmien takia. Possu casino on testattu useilla eri laitteilla ja se toimii myös mobiilissa.

    Possu casino on lisäksi suunniteltu eri-ikäisille pelaajille, joten kaikki voivat pelata yhdessä. Possu casino on myös eri-kielisille pelaajille, sillä sivusto on saatavilla useilla eri kielillä.

    Possu casino on lisäksi yhteistyössä eri-kielisille pelaajille, sillä sivusto on saatavilla useilla eri kielillä. Possu casino on myös eri-kielisille pelaajille, sillä sivusto on saatavilla useilla eri kielillä.

    Käyttäjäystävällisyys

    Possu casino on suunniteltu käyttäjäystävälliseksi, jotta pelaajat voivat keskittyä peliin eikä teknisiin ongelmien takia. Possu casino on testattu useilla eri laitteilla ja se toimii myös mobiilissa.

    Possu casino on lisäksi suunniteltu eri-ikäisille pelaajille, joten kaikki voivat pelata yhdessä. Possu casino on myös eri-kielisille pelaajille, sillä sivusto on saatavilla useilla eri kielillä.

    Kokemukset

    Possu casino on saanut paljon positiivisia arvosteluja pelaajilta. Pelaajat ovat ylittäneet sivuston käyttäjäystävyyden ja eri-kielisille pelaajille. Possu casino on myös saanut paljon positiivisia arvosteluja pelaajilta, jotka ovat ylittäneet sivuston käyttäjäystävyyden ja eri-kielisille pelaajille.

    Possu casino on myös saanut paljon positiivisia arvosteluja pelaajilta, jotka ovat ylittäneet sivuston käyttäjäystävyyden ja eri-kielisille pelaajille. Possu casino on myös saanut paljon positiivisia arvosteluja pelaajilta, jotka ovat ylittäneet sivuston käyttäjäystävyyden ja eri-kielisille pelaajille.

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Translate »
    error: Content is protected !!
    Open chat