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

Лучший способ онлайн ставкалар похвастаться онлайн -казино 500 восхитительный дополнительный

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

Бонусы

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

500% восхитительного игрового учреждения дает участникам возможность увеличить свою подлинную вставку в 4X. Это помогает участникам наслаждаться своей лучшей игрой в столице T и начнется получить вероятность заработки. Но такая награда является дополнительной нестабильной рекомендацией для совершенно новых людей. По мере того, как вы перемещаете преимущества конкретной публикации, как правило, вверх, просто убедитесь, что вы также находите ограничения. Хорошая новость в том, что есть несколько предложений, чтобы защитить вас от самых известных опасностей. Уникальный, вы всегда должны видеть условия дополнительных бонусов интернет -казино, чтобы предотвратить какие -либо признаки.

Игровые названия доступны

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

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

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

T & CS

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

Когда у вас есть новая 500% -ная выгода в казино, приложите попытку рассмотреть условия. Прямо здесь законодательство отличается от одного азартного учреждения от альтернативы, и начать, может повлиять на то, сколько вы можете получить в бонусе. У любого бонуса может быть определенные правила, добавить самую милую циркуляцию вниз и весь предел отмены. Другие, возможно, придется иметь ролевые факты, прежде чем вы претендуете на выгоду. Другие ограничения содержит HR -ограничения для реализации выгоды. Это действительно важный аспект, особенно если вы хотите повысить важность бонуса.

Качество

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

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

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

Программное обеспечение

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

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

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

Translate »
error: Content is protected !!
Open chat