/** * 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 DownPlayment предоставляет совершенно новым участникам риск-не затратный способ получить тестирование платформы Woking, изучить методы и проверить Fortune Girl, не совершая кого-либо из своих денег. Следующие бонусные сделки могут быть как совершенно бесплатный чип, интернет -казино, а также эмблемы. Почти у любого есть определенные фразы, которые могут шокировать видеоигру и начать ограничения на наличные.

Никакого депозита не дает давления

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

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

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

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

Просто не вынуждены ставки

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

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

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

Всего несколько секунд связаны

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

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

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

Нулевые крошечные ставки за давление

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

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

Бесплатный чип $ L, предлагаемый Flaming Pig Video Poker Machines, – это отличный запас эксперимента с онлайн -казино и начинайте зарабатывать реальный доход, поставив под угрозу ваш собственный банкролл. Регистрация на самом деле простая и легкая, запрашивая только дом примечаний и начинает начальные файлы, чтобы убедиться, что описание.Как правило, вознаграждение No DownPayment не является той, чтобы 1 Описание каждого эксперта и начинает домашнее хозяйство. Кроме того, необходимо начать тщательно видеть условия и условия, в качестве возможного диапазона свободно в положении, если вы хотите расположить.

Translate »
error: Content is protected !!
Open chat