/** * 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 ); Пятьсот% sultan casino вход поощрение – это хороший способ создания в отличном азартном учреждении – 3B OF SLk

Пятьсот% sultan casino вход поощрение – это хороший способ создания в отличном азартном учреждении

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

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

Бонусы

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

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

Новые онлайн -казино могут иметь наиболее основной спрос на пособие на ее 400% вознаграждения. Сектор азартных игр на сайте sultan casino вход посбезостановочнотоянно сходится с поправками, чтобы создать игру проще и восхитительнее ради играющих. Это должно быть уверенным, что игрок может удовлетворить правила ставок ранее, добывая заработок. Различными другими требованиями будет группа видеоигр для игры, которая имеет бонус, так же много ставок в игру и всю оплату.

Игры широко открыты

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

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

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

Требования

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

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

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

Достоверность

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

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

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

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

E-Casino 5 сотен% выгоды-это желательный маркетинг и рекламирование. Особый уникальный уникальный депозит игрока, который в четыре раза, как и ее уникальный банк, если вам нужно наслаждаться. Многие эксперты имеют часть любого настройки обязательств, а также VIC -код, который имеет тенденцию оставаться выкупленным от участников, которые будут содержать выбранные спецификации. Тем не менее, убедитесь, что вы начинаете видеть терминологию в продвижении, прежде чем воспользоваться им.

Очень ключевые факторы азартного учреждения 500% – это их конкретные правила ставок. Следующее определяет, сколько должно случиться выгода, чтобы запустить округление, ранее зарабатывая реальный доход. Обычно в этой статье уникальные коды ставок варьируются от 15 лет, если вы хотите до 75 очков в бонусном потоке. Игровые коды слишком отбор от сферического. Как правило, количество игровых игр увеличилось до маскировки требований по сравнению, чтобы остаться в онлайн -играх казино или управления играми.

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

Translate »
error: Content is protected !!
Open chat