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

Испытать удовольствие, включающее ставки на Драгон Мани рабочее зеркало азартное учреждение в Интернете.

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

В том числе новое интернет-казино Pulsz находит онлайн-игры Art-In и предоставляет повседневные события для наград. Однако он обеспечивает уровни видео-слотов онлайн, игра в кино и начинает Black-jack.

Слоты

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

Ставки

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

Двадцать один

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

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

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

Кости

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

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

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

Баккара

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

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

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

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

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

Flash Games дают людям возможность оценить свежие азартные дома и начать тип Girl Round, не рискуя денег. Они также предназначены для активной игры в методы и достижения чувства, чтобы получить законодательство и начать ставку, включающие титулы игр в казино, прежде чем внести свой вклад.

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

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

Translate »
error: Content is protected !!
Open chat