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

Поездка на казино в моней х казино интернете бесплатно вознаграждение

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

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

Бонусы

Интернет -казино онлайн дополнительные бонусы – это интересный способ начать с любого человека. Они имеют многочисленные преимущества, такие как кредиты на местоположение и инициируют бесплатные переиздание. Большинство, пожалуйста, возьмите конкретный пункт ограничения по времени и инициируйте коды ставок, которые он должен был начать видеть партнерское соглашение. Выбор лучшего интернет -казино вместе с вами начинается с тысяч очков, и ваш вид ставок и посвященный. Самодостаточные знания: мы с участием экспертов обсуждают за онлайн-казино дополнительные игры, играющие в реальные деньги вместе с обширной оценкой его условий. Конкретное означает, что для каждого дополнительного казино онлайн -казино зависит от заслуги и начинает правило.

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

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

Регулирование

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

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

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

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

Казино онлайн абсолютно бесплатная выгода

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

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

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

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

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

Translate »
error: Content is protected !!
Open chat