/** * 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

Казино с бесплатным бонусом Олимп бет казино без первоначального взноса

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

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

Бесплатные движения

Бесплатные спины – один из отличных способов проверить онлайн -казино, не подвергая опасности ваши деньги. Прямо здесь преимущества открыты в отношении конкретных названий игровых автоматов, но также могут быть инвестированы в кредитную карту Scuff, Draw Case и Begin Bingo. Уровень игровой игры и инициировать требования к ставкам варьируется от интернет -казино, поэтому убедитесь, что вы смотрите на фразы, ранее провозглашающие какие -либо отправки. Некоторые из этих слока обладают ограничениями ставок, полная денежная доклада варьируется и инициирует отдаленные ограничения.

Дополнительный циркуляр на самом деле является дополнительным измеренным казино, округлым фактическим, позволяет вам выиграть Real Cash Awards, не создавая депозит.Подобные рекламы будут поставляться с азартными заведениями в Интернете, но она вынуждена видеть фразы в прошлом активно играть. Это поможет предотвратить сложность стоимости вашего часа и денег без знаний о публикации.

Дополнительное округление может быть подвержено большим регулированию и начало регулирования, включая правила ставок, округлую квалификацию и дни начала прекращения. Просто убедитесь, что вы изучите прямо здесь, когда вы начнете принять участие, потому что они определят, не новая ли вы новая прибыль, как правило, есть в наличии. Для тех, у кого есть какие -либо запросы, попробуйте прикоснуться к новым сотрудникам Casino’ersus Customer Surreck. Если вы думаете, что ставки – это такое беспокойство, убедитесь, что вы искали помощь от профессионала. Власти страны с проблемными ставками обладают личной поддержкой в ​​стране по всей стране и начинают отношения слов.

Бесплатный компьютерный чип колеса колеса

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

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

Условия прямо здесь реклама меняется из казино, чтобы онлайн -казино. Нужно правило пособия, чтобы претендовать, и другие Дон’Мириэль. Такое предложение ограничено выбранными играми или даже сферическими марками, а некоторые, как правило, являются переменными, чем эти. Любой серьезным соображением будет сферическое взвешивание, которое определяет количество некоторых круглых, выдвигает требования к очистке ставок. Вероятно, процент здесь не является беспристрастным, что может вывести вкладчиков из названий игр, которые имеют более высокие факторы области и облегчают платы Click-to-Guru (RTP). Это может гарантировать, что людям трудно погасить девушку без затрат. Но, если мы дадим интернет -казино, которое предлагает бесплатные чипсы, ваш стенд для нового стиля игры, это достойно его наслаждения.

Дополнительные кредиты

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

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

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

Ставки уникальные коды

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

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

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

Translate »
error: Content is protected !!
Open chat