/** * 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 ); Онлайн -казино Вулкан вход от бесплатного зарегистрированного пособия – 3B OF SLk

Онлайн -казино Вулкан вход от бесплатного зарегистрированного пособия

Контентные статьи

Онлайн-азартные дома представляют участникам несколько дополнительных бонусов регистрации казино. Большинство похожи на абсолютно бесплатное участие в кредитах, покупке, пособиях или авансовых платежах дополнительных бонусов.

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

Абсолютно нет награды

На веб-азартных заведениях публикуются различные виды бонусных предложений для привлечения совершенно новых участников. Следующие дополнительные бонусы, как правило, поддаются форме непредоставления компьютерного чипа или, возможно, движения, а некоторым, возможно, придется иметь вниз. Несмотря на то, что практически любые онлайн -купоны казино имеют определенные условия. В этой статье словарь, несомненно, немного проанализируется немного, просто потому, что они определенно решают, является ли преимущество действительным или иным образом. Они также будут рекомендовать игроку из ставок размера, которые были созданы с использованием бонуса, и начнут делать ставки выше конкретного лимита, возможно, не имеет права обналичить.

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

Быть одним из самых теплых вознаграждений в интернет-казино, включающее преимущество в казино без депозита.Это отличный способ начать любого игрового двигателя, как он дает, и есть онлайн -игры, прежде чем вы решите, а также это новые реальные деньги. Единственная реальная негативная вещь заключается в том, что вы можете отвлечь новую выплату этой наградой, если вы не встретите уникальные коды ставок. Однако, независимо от того, если вы решили выиграть вещь через бесплатный бонус, это определенно стоит того момента.

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

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

При разведке для онлайн -казино, если вы хотите играть в азартные игры, вы должны знать размер его или ее джекпотов, а также коэффициенты оплаты отдельных онлайн -игр. Кроме того, он вынужден изучить репутацию любого интернет -казино и начать, если оно зарегистрировано в законодательстве. Вы можете даже посмотреть на банду видеоигр, и начать, какие дополнительные бонусы они имеют из -за участников. Многие из этих бонусов регистрации, как правило, эффективны, чем другие, поэтому лучше выбрать казино, которое предлагает множество программных кодов вместе с вами. Или еще, вы стоите вам серьезных сумм своих долларов.

В Интернете заведения азартных игр предоставляются банда других бонусов в интернет -казино, если вам нужно поймать свежих людей. Многие похожи на бесплатные вращения или, возможно, деньги.Количество за вознаграждение начинается с казино, большинство из них получит минимальную необходимость в ограниченном количестве и инициировать на него слока и сценарии. Это также может граничить с абсолютным максимальным распределением. Тем не менее, можно увеличить значимость приведенного ниже. Лучшим способом сделать это должно быть постепенно видеть словарный запас и типы условий.

Еще одним популярным размером в реестре казино может быть отправление в возврате денег, где результаты являются элементом новых убытков с выбранным периодом HR. Обычно это новая область каждой недели, которые вы проливаете с конкретными контролями онлайн -игр или, возможно, игровых автоматов, а также регулярного движения по позиции. Это также щедро, когда вы используете его, позволяет вам делать правильно.

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

Шаг первый в заявлении о бонусе регистра в интернет -казино может заключаться в том, чтобы присоединиться к демонстрации сайта. Обычно он должен иметь электронные письма домой, почувствовать специфику плюс слово. После того, как вы выполнили, вы можете начать наслаждаться реальной сделкой. Но лучше всего обеспечить управление азартными играми и инициатором, которое было разрешено с экспертом, потому что MGA.

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

В качестве альтернативы, интернет -сайт обеспечивает настольное преимущество, когда оригинальный депозит, а также в соответствии с потоком пособий, как правило, предназначены внутри, следуя отслеживанию ставок. Это хороший способ для людей, которые дольше наслаждаются этой статьей, однако вынуждено отмечать, что выгода будет получена в случае, если правила ставки в конечном итоге выполнились.

Translate »
error: Content is protected !!
Open chat