/** * 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 ); June 2025 – Page 351 – 3B OF SLk

Monthly Archives: June 2025

ปลาวาฬฟอร์จูน dos pokies ออนไลน์โดยวิดีโอเกมที่เฟื่องฟูสล็อตฟรีทั้งหมด

บทความ รอบโบนัสและการหมุนฟรีทั้งหมด ปลาโลมามีค่าใช้จ่ายที่ได้รับความนิยมอย่างมากผู้เข้าร่วมในสหราชอาณาจักรและสหรัฐอเมริกา ความเข้ากันได้ของมือถือ การวิเคราะห์เกมสล็อตคาสิโนวิดีโอเกม Roaring (Zero Free Games) โบนัสเพิ่มเติมที่ยิ่งใหญ่ที่สุดยังให้ตำแหน่งค่าโลมา จากการวิเคราะห์ภายในและคุณอาจเป็นประโยชน์ไปจนถึงรายงานล่าสุดเราอยู่ที่นี่เพื่อค้นหาโปรแกรมที่ดีที่สุดในการเลือกทางเลือกในแต่ละขั้นตอนของวิธีการของคุณ สนามกับวงล้อ 5 pellucid นั้นเห็นได้ชัดคือ “ทำ” ของความกว้างสีน้ำเงิน-ไวโอเล็ตที่โลมาสีฟ้าอ่อนที่น่ารื่นรมย์กำลังว่ายน้ำ จากด้านล่างจากมือขวาของนักพนันคือปะการังสีดำ-ไวโอเลตที่มีลักษณะคล้ายกับเส้นเลือดฝอย การจ่ายเงินของ Rook ใหม่นั้นได้รับการปรับให้เหมาะสมอย่างยิ่งสำหรับความเพลิดเพลินของมือถือเพื่อช่วยให้คุณเป็นโอกาสของคุณในการวิ่ง สิ่งเดียวที่ถูกทำลายบน iPad และคุณอาจนิสัย OS Android เป็นจริงการเคลื่อนไหวการเต้นรำที่สนุกสนานของ Head คลี่คลายคุณสมบัติ paytable จากการเรียนรู้ของการเรียนรู้ที่จะได้รับราคาสูงของคุณเพื่อทำความเข้าใจกับผลกำไรที่ผันผวน ตำแหน่งใหม่ล่าสุดเต้นรำเพื่อรับความคุ้มครองสูงจากความผันผวนปกติทำให้เกิดความสมดุลแบบอะดรีนาลีนที่มีความกระตือรือร้นตั้งแต่โอกาสและคุณจะได้รับการคัดเลือกจากแบรนด์ตัวแทน ฟังก์ชั่นตัวชี้นำการระเบิดใหม่ล่าสุดยังใช้งานได้ในขณะที่อยู่ใน Freebies ใหม่ล่าสุดเนื่องจากตัวคูณสัญญาณการระเบิดได้รับการปรับปรุงในความสามารถจริง ตัวคูณผลกำไรใหม่ล่าสุดของฟังก์ชั่นสปินฟรีทั้งหมดเริ่มต้นที่ 3x และจะไปตลอดทางถึง 15x เมื่อคุณมีการพัฒนาห้าหรือมากขึ้นติดต่อกัน รอบโบนัสและการหมุนฟรีทั้งหมด จะมีโอกาสที่จะเล่นชัยชนะ 5 ครั้งเพื่อจ่ายเงินสองครั้ง ตำแหน่ง Dolphin Atde ใหม่นั้นถูกนำไปให้ผู้เข้าร่วมโดย Aristocrat Gaming ผู้ขายแอพที่มีประสบการณ์ได้รับพอร์ตที่ยิ่งใหญ่ที่สุดและคุณจะเกือบทุกเกมอื่น ๆ มานานหลายทศวรรษ สัญญาณแรกจากช่วงค่าปานกลางจากโรงเรียนห่างจากอาหารทะเลและปลาหมึกยักษ์แต่ละอันอาจทำให้เกิดการจ่ายเงินจาก 10 […]

Plattform Déi frësch Halls Spillautomat Epignosis Spezialitéitsverhalen

D'Spill besteet aus ville Chrëschtdags-inspiréierte Positiounszeechen mat exklusive Multiplikatoren. Symboler mat engem niddrege Ranking sinn z.B. Pinienzapfen, déi 5, 10 oder 31 Multiplikatoren hunn. Als nächst am Ranking ass d'Laterne, déi den neien Asaz 5, 15 oder 40 Mol multiplizéiert. Déi nei Chrëschtdagsbam-Ikon huet 5, 20 oder 50 Multiplikatoren, well d'Rendier-Ikon och Är Wiel 8, […]

Deco Diamonds Myndbandsstaða Álit i24Slot app niðurhal apk Microgaming

Blogg Ætti ég að njóta Deco Diamonds aftur í snjallsímanum mínum? – i24Slot app niðurhal apk Bónus táknum bætt við Endurstilla lykilorð Hvatar fyrir spilavíti Deco Expensive Diamonds myndspilakassi: Arðbærar samsetningar og þú munt vinna sér inn tekjur Í meginatriðum byggt á Murder to the Orient skjánum birtist glænýtt IGT nafn og þú gætir hljómað […]

Disco i24Slot kirjaudu sisään Night Fright Slot: Ilmainen nauti ja online -peliarvostelu

Viestejä Vain välitöntä ylimääräistä? – i24Slot kirjaudu sisään Lisää peliä Näytti sisältöä Jos olet naapurusto, joka pyrkii mainitsemaan kaupungin yöelämää, muuten turisti, joka yrittää hallita Istanbulissa suurimpia tekno -yökerhoja, että sen luettelo tarjoaa kaikille mitä tahansa. Joten seuraavan kerran tarve auttaa sinua siirtymään hallitsee, ymmärrät parhaat johtamispaikat. Suunnittele Istanbulin rytmisiä ääniä ja voit sallia kappaleiden […]

بكرات ميكانيكية

محتوى مقال عن تقنية الألعاب الأوروبية (EGT) فتحات IGT كازينوهات اليانصيب تاج حسي على غرار مصطلح شائع آخر من EGT، وتحديدًا "رائع"، أصبحت لعبة 40 Very Sexy اللعبة المفضلة لدى اللاعبين في الكازينوهات الافتراضية القديمة. مكافأة الدورات المجانية الجديدة هي المفضلة لديّ شخصيًا، إذ تتيح لك فرصة الفوز بما يصل إلى 25 دورة إضافية في […]

EcoPayz कैसीनो सर्वश्रेष्ठ EcoPayz कैसीनो साइटें 2025

ब्लॉग आनंद लें और आप जीत सकते हैं दिशा मैं जब भी सबसे अच्छा इंटरनेट कैसीनो इंटरनेट साइटों का पता लगाने का एहसास प्रभारी कार्ड 2025 के भीतर सर्वश्रेष्ठ EcoPayz कैसीनो क्रेडिट/डेबिट नोट्स हम स्पष्ट संपादकीय सलाह के अनुसार कार्य करते हैं और आप शोध कार्यों और वित्तपोषण का खुलासा कर सकते हैं। इस लघु […]

Recenzija Teacup: Peacocksov nadnaravni triler Upoznajte se s izvrsnim filmom مركز što je aplikacija Booi وان لايف Te u postojanje

Uz to rečeno, kad god pregledam ovaj dio, uzbuđen sam, samo zapamtite da su ovi zaključci izvedeni iz mog osobnog iskustva nakon samo 24 sata provedenog u Moldaviji. I tako je bila tamna i olujna noć, onakva noć koja sigurno sluzi sa zloslutnim predznacima, pa ću nesumnjivo pomisliti da doista rijetko postoji neka druga vrsta […]

Üks hea põhjus, Trinocasino kasiino sisselogimine miks me ei saa konkstekstina "kliki siia" mängida

Artiklid E-raamatute sihtrühm – Trinocasino kasiino sisselogimine Otsi Veel Toby Osbourni blogisid Veebisaidi lingid URL-is Sama lingi tekstisõnum Selle saidi loomise ja hüperlinkide kohta peaks olema teave. Lingid on ühed põhilised kriteeriumid, mis määratlevad, mida nimetatakse internetiks ja/või veebisaitideks. Seega nimetame internetis ilma elektroonilise ühenduseta veebisaite ja saite ainult linkide kaudu, mis asuvad postituste, saitide […]

1xbet qimor uyi Internetda 1xbetli uyalarda ishlash uchun siz maxsus o’yin qurilmalarini olasiz va pulni imzolashingiz mumkin

Kuzatilgan pulni orqaga qarash uchun, shuningdek saytning shaxsiy hisob raqamida ballar sonini kerak. Birinchi daraja har bir zararning bir yarim foizini beradi, shunda foiz o’n foizga oshadi. VIP-favqulodda vaziyat bilan, o’yinchi nafaqat yo’qolganlar orqali, balki har qanday pul tikish, hatto izolyatsiyalarni ham hisobga olgan holda tuzalishi mumkin.

Translate »
error: Content is protected !!
Open chat