/** * 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 ); Нет lev casino азартных азартных игр. – 3B OF SLk

Нет lev casino азартных азартных игр.

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

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

Просто нет депозита

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

Как вы можете втиснуть ноль в Интернет -казино в Интернете. Без затрат вращается

Если вы хотите потратить просто ни в казино, свободном от сети, просто зарегистрируйтесь в торговой учетной записи в азартном заведении, с которым вы хотели бы поэкспериментировать. Для наиболее детального осмысливания движения, рекомендовано опробовать на интернет-сайте lev casino демонстрировать порядок. В случае, если вы это сделаете, посмотрите на свою статью, а также Sprint, чтобы получить доступные предложения. Некоторые могут быть использованы, а другие требуют правила кампании (посмотрите на факты выпуска, касающиеся кратких функций). В случае, если вы задокументировали новые вращения без затрат, ознакомьтесь с действием, которое вы должны играть и инициировать переключение!

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

Как приобрести наиболее мелкие казино в линейке.

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

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

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

Учитывая разнообразие полностью бесплатной мельницы спинов?

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

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

Другой компонент, который влияет на значимость свободных спинов E-Casino’ersus,-это то, где они будут ограничивать предел предела денежных средств. Заведения, которые позволяют участникам, разрешают участникам, если вы хотите удалить довольно много прибыли женщины, обычно показаны выше людей, которые платят низкий или, возможно, просто без ограничений, потому что может значительно увеличить общую энергию значимость любого бонуса.

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

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

Translate »
error: Content is protected !!
Open chat