File "wc-account-functions.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/wc-account-functions.php
File
size: 9.48 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('ABSPATH') || exit;
function wc_lostpassword_url($default_url = '')
{
if (!did_action('init')) {
return $default_url;
}
if (is_multisite() && isset($_GET['redirect_to']) && false !== strpos(wp_unslash($_GET['redirect_to']), network_admin_url())) {
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);
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);
}
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];
}
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('Addresses', 'Address', (int) wc_shipping_enabled(), 'woocommerce'), 'payment-methods' => __('Payment methods', 'woocommerce'), 'edit-account' => __('Account details', 'woocommerce'), 'customer-logout' => __('Logout', 'woocommerce'));
foreach ($endpoints as $endpoint_id => $endpoint) {
if (empty($endpoint)) {
unset($items[$endpoint_id]);
}
}
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);
}
function wc_get_account_menu_item_classes($endpoint)
{
global $wp;
$classes = array('woocommerce-MyAccount-navigation-link', 'woocommerce-MyAccount-navigation-link--' . $endpoint);
$current = isset($wp->query_vars[$endpoint]);
if ('dashboard' === $endpoint && (isset($wp->query_vars['page']) || empty($wp->query_vars))) {
$current = true;
} elseif ('orders' === $endpoint && isset($wp->query_vars['view-order'])) {
$current = true;
} elseif ('payment-methods' === $endpoint && isset($wp->query_vars['add-payment-method'])) {
$current = true;
}
if ($current) {
$classes[] = 'is-active';
}
$classes = apply_filters('woocommerce_account_menu_item_classes', $classes, $endpoint);
return implode(' ', array_map('sanitize_html_class', $classes));
}
function wc_get_account_endpoint_url($endpoint)
{
if ('dashboard' === $endpoint) {
return wc_get_page_permalink('myaccount');
}
if ('customer-logout' === $endpoint) {
return wc_logout_url();
}
return wc_get_endpoint_url($endpoint, '', wc_get_page_permalink('myaccount'));
}
function wc_get_account_orders_columns()
{
$columns = 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')));
return apply_filters('woocommerce_my_account_my_orders_columns', $columns);
}
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;
}
function wc_get_account_payment_methods_columns()
{
return apply_filters('woocommerce_account_payment_methods_columns', array('method' => __('Method', 'woocommerce'), 'expires' => __('Expires', 'woocommerce'), 'actions' => ' '));
}
function wc_get_account_payment_methods_types()
{
return apply_filters('woocommerce_payment_methods_types', array('cc' => __('Credit card', 'woocommerce'), 'echeck' => __('eCheck', 'woocommerce')));
}
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')), 'view' => array('url' => $order->get_view_order_url(), 'name' => __('View', 'woocommerce')), 'cancel' => array('url' => $order->get_cancel_order_url(wc_get_page_permalink('myaccount')), 'name' => __('Cancel', 'woocommerce')));
if (!$order->needs_payment()) {
unset($actions['pay']);
}
if (!in_array($order->get_status(), apply_filters('woocommerce_valid_order_statuses_for_cancel', array('pending', 'failed'), $order), true)) {
unset($actions['cancel']);
}
return apply_filters('woocommerce_my_account_my_orders_actions', $actions, $order);
}
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));
}
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);
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) ? ucfirst($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);
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);