PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/tiktechtok.org/wp-content/plugins/woocommerce-store-toolkit/includes/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //home/trave494/tiktechtok.org/wp-content/plugins/woocommerce-store-toolkit/includes/admin.php |
<?php use Automattic\WooCommerce\Utilities\OrderUtil; include_once( WOO_ST_PATH . 'includes/admin/meta_box.php' ); include_once( WOO_ST_PATH . 'includes/admin/dashboard.php' ); // Display admin notice on screen load function woo_st_admin_notice( $message = '', $priority = 'updated', $screen = '' ) { if( $priority == false || $priority == '' ) $priority = 'updated'; if( $message <> '' ) { ob_start(); woo_st_admin_notice_html( $message, $priority, $screen ); $output = ob_get_contents(); ob_end_clean(); // Check if an existing notice is already in queue $existing_notice = get_transient( WOO_ST_PREFIX . '_notice' ); if( $existing_notice !== false ) { $existing_notice = base64_decode( $existing_notice ); $output = $existing_notice . $output; } set_transient( WOO_ST_PREFIX . '_notice', base64_encode( $output ), MINUTE_IN_SECONDS ); add_action( 'admin_notices', 'woo_st_admin_notice_print' ); } } // HTML template for admin notice function woo_st_admin_notice_html( $message = '', $priority = 'updated', $screen = '' ) { // Display admin notice on specific screen if( !empty( $screen ) ) { global $pagenow; if( is_array( $screen ) ) { if( in_array( $pagenow, $screen ) == false ) return; } else { if( $pagenow <> $screen ) return; } } echo '<div id="message" class="' . esc_attr( $priority ) . '">'; echo '<p>'; echo wp_kses_post( $message ); echo '</p>'; echo '</div>'; } // Grabs the WordPress transient that holds the admin notice and prints it function woo_st_admin_notice_print() { $output = get_transient( WOO_ST_PREFIX . '_notice' ); if( $output !== false ) { $output = base64_decode( $output ); echo wp_kses_data( $output ); delete_transient( WOO_ST_PREFIX . '_notice' ); } } // Add Store Toolkit, Docs links to the Plugins screen function woo_st_add_settings_link( $links, $file ) { $this_plugin = plugin_basename( WOO_ST_RELPATH ); if( $file == $this_plugin ) { $docs_url = 'https://www.visser.com.au/docs/'; $docs_link = sprintf( '<a href="%s" target="_blank">' . __( 'Docs', 'woocommerce-store-toolkit' ) . '</a>', esc_url( $docs_url ) ); $settings_link = sprintf( '<a href="%s">' . __( 'Settings', 'woocommerce-store-toolkit' ) . '</a>', esc_url( add_query_arg( 'page', 'woo_st', 'admin.php' ) ) ); array_unshift( $links, $docs_link ); array_unshift( $links, $settings_link ); } return $links; } add_filter( 'plugin_action_links', 'woo_st_add_settings_link', 10, 2 ); // Load CSS and jQuery scripts for Store Toolkit screen function woo_st_enqueue_scripts( $hook ) { // Simple check that WooCommerce is activated if( class_exists( 'WooCommerce' ) ) { global $woocommerce; wp_enqueue_style( 'woocommerce_admin_styles', $woocommerce->plugin_url() . '/assets/css/admin.css' ); } if( $hook == 'woocommerce_page_woo_st' ) { // Time Picker Addon wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'jquery-ui' ); wp_enqueue_script( 'jquery-ui-datepicker' ); wp_enqueue_style( 'jquery-ui-datepicker', plugins_url( '/templates/admin/jquery-ui-datepicker.css', WOO_ST_RELPATH ) ); /* wp_enqueue_script( 'jquery-ui-timepicker', plugins_url( '/js/jquery.timepicker.js', WOO_ST_RELPATH ) ); wp_enqueue_style( 'jquery-ui-timepicker', plugins_url( '/templates/admin/jquery-ui-timepicker.css', WOO_ST_RELPATH ) ); */ } // Settings $pages = array( 'woocommerce_page_woo_st', 'edit-tags.php', 'user-edit.php', 'profile.php', 'index.php', 'post.php' ); if( in_array( $hook, $pages ) ) { wp_enqueue_style( 'woo_st_styles', plugins_url( '/templates/admin/toolkit.css', WOO_ST_RELPATH ) ); wp_enqueue_script( 'woo_st_scripts', plugins_url( '/templates/admin/toolkit.js', WOO_ST_RELPATH ), array( 'jquery' ) ); } } add_action( 'admin_enqueue_scripts', 'woo_st_enqueue_scripts' ); function woo_st_permanent_delete_link( $actions, $post ) { // Check that the User can manage_woocommerce if( !current_user_can( apply_filters( 'woo_st_permanent_delete_capability', 'manage_woocommerce' ) ) ) { return $actions; } // Limit to the Product CPT screen if( $post->post_type != 'product' ) { return $actions; } // Do not show for the Trash screen $post_status = ( isset( $_REQUEST['post_status'] ) ? sanitize_text_field( $_REQUEST['post_status'] ) : false ); if( !empty( $post_status ) ) { if( $post_status == 'trash' ) return $actions; } // Check Settings option $permanently_delete_products = woo_st_get_option( 'permanently_delete_products', 1 ); if( empty( $permanently_delete_products ) ) return $actions; $post_id = absint( $post->ID ? $post->ID : false ); $url = admin_url( 'edit.php?post_type=product&ids=' . $post_id . '&action=permanent_delete_product' ); $actions['permanent_delete'] = '<span class="delete"><a href="' . wp_nonce_url( $url, 'woo_st-permanent_delete_' . $post_id ) . '" title="' . esc_attr__( 'Permanently delete this product', 'woocommerce-store-toolkit' ) . '" rel="permalink">' . __( 'Delete Permanently', 'woocommerce' ) . '</a></span>'; return $actions; } add_filter( 'post_row_actions', 'woo_st_permanent_delete_link', 10, 2 ); add_filter( 'page_row_actions', 'woo_st_permanent_delete_link', 10, 2 ); function woo_st_permanent_delete_product_action() { if ( empty( $_REQUEST['ids'] ) ) { wp_die( __( 'No product to permanently delete has been supplied!', 'woocommerce-store-toolkit' ) ); } // Get the original page $id = isset( $_REQUEST['ids'] ) ? absint( $_REQUEST['ids'] ) : ''; check_admin_referer( 'woo_st-permanent_delete_' . $id ); // Delete the Post $deleted = 0; if ( !empty( $id ) ) { wp_delete_post( $id, true ); $deleted++; $post_type = 'product'; $url = add_query_arg( array( 'post_type' => $post_type, 'action' => null, '_wpnonce' => null, 'ids' => $id, 'deleted' => $deleted ), 'edit.php' ); wp_redirect( $url ); exit(); } else { wp_die( __( 'Permanently delete Product failed, could not find original product:', 'woocommerce' ) . ' ' . $id ); } } add_action( 'admin_action_permanent_delete_product', 'woo_st_permanent_delete_product_action' ); function woo_st_permanent_delete_product_bulk_admin_footer() { global $post_type; // Check that the User can manage_woocommerce if( !current_user_can( apply_filters( 'woo_st_permanent_delete_capability', 'manage_woocommerce' ) ) ) { return; } $post_status = ( isset( $_REQUEST['post_status'] ) ? sanitize_text_field( $_REQUEST['post_status'] ) : false ); if( $post_type == 'product' && ( $post_status <> 'trash' ) ) { // Check Settings option $permanently_delete_products = woo_st_get_option( 'permanently_delete_products', 1 ); if( empty( $permanently_delete_products ) ) return; ?> <script type="text/javascript"> jQuery(document).ready(function() { // Add Delete Permanently to bulk actions menu on the Products screen jQuery('<option>').val('permanent_delete').text('<?php _e( 'Delete Permanently' )?>').appendTo("select[name='action']"); jQuery('<option>').val('permanent_delete').text('<?php _e( 'Delete Permanently' )?>').appendTo("select[name='action2']"); }); </script> <?php } } add_action( 'admin_footer-edit.php', 'woo_st_permanent_delete_product_bulk_admin_footer' ); function woo_st_permanent_delete_product_bulk_action() { $wp_list_table = _get_list_table( 'WP_Posts_List_Table' ); $action = $wp_list_table->current_action(); switch( $action ) { case 'permanent_delete': check_admin_referer( 'bulk-posts' ); if ( empty( $_REQUEST['post'] ) ) { wp_die( __( 'No products to permanently delete have been supplied!', 'woocommerce-store-toolkit' ) ); } $post_ids = ( isset( $_REQUEST['post'] ) ? array_map( 'absint', $_REQUEST['post'] ) : false ); $deleted = 0; if( !empty( $post_ids ) ) { foreach( $post_ids as $post_id ) { wp_delete_post( $post_id, true ); $deleted++; } } $post_type = 'product'; $url = add_query_arg( array( 'post_type' => $post_type, 'action' => null, '_wpnonce' => null, 'deleted' => $deleted, 'ids' => join( ',', $post_ids ) ), 'edit.php' ); wp_redirect( $url ); exit(); break; default: return; break; } } add_action( 'load-edit.php', 'woo_st_permanent_delete_product_bulk_action' ); // HPOS Order Filters function woo_st_custom_order_filters( $order_type, $which ) { if ( $which != 'top' ) { return; } if ( ! current_user_can( 'manage_options' ) ) { return; } woo_st_shop_order_filters(); } add_action( 'woocommerce_order_list_table_restrict_manage_orders', 'woo_st_custom_order_filters', 10, 2 ); function woo_st_restrict_manage_posts() { global $typenow; if( !current_user_can( 'manage_options' ) ) return; if( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) { woo_st_shop_order_filters(); } } add_action( 'restrict_manage_posts', 'woo_st_restrict_manage_posts' ); function woo_st_shop_order_filters() { if( apply_filters( 'woo_st_shop_order_billing_country_filter', true ) ) woo_st_shop_order_billing_country_filter(); if( apply_filters( 'woo_st_shop_order_shipping_country_filter', true ) ) woo_st_shop_order_shipping_country_filter(); if( apply_filters( 'woo_st_shop_order_payment_gateway_filter', true ) ) woo_st_shop_order_payment_gateway_filter(); } function woo_st_shop_order_billing_country_filter() { $wc_countries = ( class_exists( 'WC_Countries' ) ? new WC_Countries() : false ); $countries = ( method_exists( $wc_countries, 'get_countries' ) ? $wc_countries->get_countries() : false ); if( empty( $countries ) ) return; $selected = ( isset( $_GET['_customer_billing_country'] ) ? sanitize_text_field( $_GET['_customer_billing_country'] ) : false ); ?> <select name="_customer_billing_country"> <option value=""><?php _e( 'All billing countries', 'woocommerce-store-toolkit' ); ?></option> <?php foreach( $countries as $prefix => $country ) { ?> <option value="<?php echo esc_attr( $prefix ); ?>"<?php selected( $prefix, $selected ); ?>><?php echo esc_html( $country ); ?></option> <?php } ?> </select> <?php } function woo_st_shop_order_shipping_country_filter() { $wc_countries = ( class_exists( 'WC_Countries' ) ? new WC_Countries() : false ); $countries = ( method_exists( $wc_countries, 'get_countries' ) ? $wc_countries->get_countries() : false ); if( empty( $countries ) ) return; $selected = ( isset( $_GET['_customer_shipping_country'] ) ? sanitize_text_field( $_GET['_customer_shipping_country'] ) : false ); ?> <select name="_customer_shipping_country"> <option value=""><?php _e( 'All shipping countries', 'woocommerce-store-toolkit' ); ?></option> <?php foreach( $countries as $prefix => $country ) { ?> <option value="<?php echo esc_attr( $prefix ); ?>"<?php selected( $prefix, $selected ); ?>><?php echo esc_html( $country ); ?></option> <?php } ?> </select> <?php } function woo_st_shop_order_payment_gateway_filter() { $payment_gateways = woo_st_get_payment_gateways(); if( empty( $payment_gateways ) ) return; $selected = ( isset( $_GET['_customer_payment_method'] ) ? sanitize_text_field( $_GET['_customer_payment_method'] ) : false ); ?> <select name="_customer_payment_method"> <option value=""><?php _e( 'All payment methods', 'woocommerce-store-toolkit' ); ?></option> <?php foreach( $payment_gateways as $payment_gateway ) { ?> <?php $payment_gateway_label = woo_st_format_payment_gateway_label( $payment_gateway->id ); ?> <option value="<?php echo esc_attr( $payment_gateway->id ); ?>"<?php selected( $payment_gateway->id, $selected ); ?>><?php echo esc_html( $payment_gateway_label ); ?></option> <?php } ?> </select> <?php } function woo_st_request_query( $vars ) { global $typenow; if( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) { // Billing country if( isset( $_GET['_customer_billing_country'] ) && $_GET['_customer_billing_country'] != '' ) { $vars['meta_query'] = array( array( 'key' => '_billing_country', 'value' => sanitize_text_field( $_GET['_customer_billing_country'] ), 'compare' => '=' ) ); } // Shipping country if( isset( $_GET['_customer_shipping_country'] ) && $_GET['_customer_shipping_country'] != '' ) { $vars['meta_query'] = array( array( 'key' => '_shipping_country', 'value' => sanitize_text_field( $_GET['_customer_shipping_country'] ), 'compare' => '=' ) ); } // Payment method if( isset( $_GET['_customer_payment_method'] ) && $_GET['_customer_payment_method'] != '' ) { $vars['meta_query'] = array( array( 'key' => '_payment_method', 'value' => sanitize_text_field( $_GET['_customer_payment_method'] ), 'compare' => '=' ) ); } } return $vars; } add_filter( 'request', 'woo_st_request_query' ); // HPOS Order query args function woo_st_order_list_table_query_args( $query_args ) { // Billing country if( isset( $_GET['_customer_billing_country'] ) && $_GET['_customer_billing_country'] != '' ) { $query_args['field_query'] = array( array( 'field' => 'billing_country', 'value' => sanitize_text_field( $_GET['_customer_billing_country'] ), 'compare' => '=' ) ); } // Shipping country if( isset( $_GET['_customer_shipping_country'] ) && $_GET['_customer_shipping_country'] != '' ) { $query_args['field_query'] = array( array( 'field' => 'shipping_country', 'value' => sanitize_text_field( $_GET['_customer_shipping_country'] ), 'compare' => '=' ) ); } // Payment method if( isset( $_GET['_customer_payment_method'] ) && $_GET['_customer_payment_method'] != '' ) { $query_args['field_query'] = array( array( 'field' => 'payment_method', 'value' => sanitize_text_field( $_GET['_customer_payment_method'] ), 'compare' => '=' ) ); } return $query_args; } add_filter( 'woocommerce_shop_order_list_table_prepare_items_query_args', 'woo_st_order_list_table_query_args', 10, 1 ); function woo_st_get_custom_post_type_ids( $post_type = false ) { if( empty( $post_type ) ) return; $posts_per_page = apply_filters( 'woo_st_get_custom_post_type_ids_posts_per_page', 10 ); $args = array( 'post_type' => $post_type, 'post_status' => 'any', 'posts_per_page' => $posts_per_page, 'fields' => 'ids', 'orderby' => 'rand' ); $post_ids = new WP_Query( $args ); if( !empty( $post_ids->posts ) ) { return $post_ids->posts; } } function woo_st_get_user_orders( $user_id = 0, $args = array(), $return = 'ids' ) { if( empty( $user_id ) ) return; $defaults = array( 'limit' => -1, 'customer_id' => $user_id, 'return' => 'ids', ); $args = wp_parse_args( $args, $defaults ); $order_query = new WC_Order_Query( $args ); $order_ids = $order_query->get_orders(); if ( 'found_posts' === $return ) { return count( $order_ids ); } return ( ! empty( $order_ids ) ? $order_ids : false ); } function woo_st_get_order_refunds( $order_id = 0, $args = array() ) { if( empty( $order_id ) ) return; $post_type = 'shop_order_refund'; $defaults = array( 'numberposts' => -1, 'post_type' => $post_type, 'post_status' => ( function_exists( 'wc_get_order_statuses' ) ? array_keys( wc_get_order_statuses() ) : false ), 'post_parent' => $order_id ); $args = wp_parse_args( $args, $defaults ); $refunds = get_posts( $args ); if( !empty( $refunds ) ) { foreach( $refunds as $key => $refund ) { $refunds[$key]->meta = get_post_custom( $refund->ID ); } } return $refunds; } function woo_st_get_payment_gateways() { global $woocommerce; $output = false; // Test that payment gateways exist with WooCommerce 1.6 compatibility if( version_compare( $woocommerce->version, '2.0.0', '<' ) ) { if( $woocommerce->payment_gateways ) $output = $woocommerce->payment_gateways->payment_gateways; } else { if( $woocommerce->payment_gateways() ) $output = $woocommerce->payment_gateways()->payment_gateways(); } // Add Other to list of payment gateways $output['other'] = (object)array( 'id' => 'other', 'title' => __( 'Other', 'woocommerce-store-toolkit' ), 'method_title' => __( 'Other', 'woocommerce-store-toolkit' ) ); return $output; } function woo_st_admin_footer_text( $footer_text = '' ) { if( !current_user_can( 'manage_options' ) ) return $footer_text; if( apply_filters( 'woo_st_admin_footer_text', true ) ) { if( !empty( $footer_text ) ) $footer_text .= ' | '; $footer_text .= __( 'Stopwatch', 'woocommerce-store-toolkit' ) . ': ' . timer_stop( 0, 3 ) . ' ' . __( 'seconds', 'woocommerce-store-toolkit' ); } return $footer_text; } // HTML active class for the currently selected tab on the Store Toolkit screen function woo_st_admin_active_tab( $tab_name = null, $tab = null ) { if( isset( $_GET['tab'] ) && !$tab ) $tab = sanitize_text_field( $_GET['tab'] ); else $tab = 'overview'; $output = ''; if( isset( $tab_name ) && $tab_name ) { if( $tab_name == $tab ) $output = ' nav-tab-active'; } return $output; } // HTML template for each tab on the Store Toolkit screen function woo_st_tab_template( $tab = '' ) { if( !$tab ) $tab = 'overview'; switch( $tab ) { case 'nuke': // Check if a previous nuke failed mid-drop $in_progress = woo_st_get_option( 'in_progress', false ); if( !empty( $in_progress ) ) { $message = sprintf( __( 'It looks like a previous nuke failed to clear that dataset, this is common in large catalogues and is likely due to WordPress hitting a memory limit or server timeout. Don\'t stress, <a href="%s">retry %s nuke?</a>', 'woocommerce-store-toolkit' ), esc_url( add_query_arg( array( 'action' => 'nuke', 'dataset' => $in_progress ) ) ), ucfirst( $in_progress ) ); woo_st_admin_notice_html( $message, 'error' ); delete_option( WOO_ST_PREFIX . '_in_progress' ); } $products = woo_st_return_count( 'product' ); if( !empty( $products ) ) { $product_statuses = woo_st_get_product_statuses(); } $images = woo_st_return_count( 'product_image' ); $tags = woo_st_return_count( 'product_tag' ); $categories = woo_st_return_count( 'product_category' ); if( !empty( $categories ) ) { $term_taxonomy = 'product_cat'; $args = array( 'hide_empty' => 0 ); $categories_data = get_terms( $term_taxonomy, $args ); } $orders = woo_st_return_count( 'order' ); if( !empty( $orders ) ) { $order_statuses = woo_st_get_order_statuses(); $orders_date = false; $date_format = 'd/m/Y'; $orders_date_from = woo_st_get_order_first_date( $date_format ); $orders_date_to = date( $date_format ); } $tax_rates = woo_st_return_count( 'tax_rate' ); $download_permissions = woo_st_return_count( 'download_permission' ); $coupons = woo_st_return_count( 'coupon' ); $shipping_classes = woo_st_return_count( 'shipping_class' ); $woocommerce_logs = woo_st_return_count( 'woocommerce_log' ); $attributes = woo_st_return_count( 'attribute' ); $brands = woo_st_return_count( 'product_brand' ); $vendors = woo_st_return_count( 'product_vendor' ); $store_exports_csv = woo_st_return_count( 'store_export_csv' ); $store_exports_tsv = woo_st_return_count( 'store_export_tsv' ); $store_exports_xls = woo_st_return_count( 'store_export_xls' ); $store_exports_xlsx = woo_st_return_count( 'store_export_xlsx' ); $store_exports_xml = woo_st_return_count( 'store_export_xml' ); $store_exports_rss = woo_st_return_count( 'store_export_rss' ); $credit_cards = woo_st_return_count( 'credit_card' ); $google_product_feed = woo_st_return_count( 'google_product_feed' ); $posts = woo_st_return_count( 'post' ); $post_categories = woo_st_return_count( 'post_category' ); $post_tags = woo_st_return_count( 'post_tag' ); $links = woo_st_return_count( 'link' ); $comments = woo_st_return_count( 'comment' ); $media_images = woo_st_return_count( 'media_image' ); $show_table = false; if( $products || $images || $tags || $categories || $orders || $store_exports_csv || $credit_cards || $attributes ) $show_table = true; break; case 'post_types': $args = array(); $output = 'objects'; $post_types = get_post_types( $args, $output ); $post_counts = array(); $post_ids = array(); if( !empty( $post_types ) ) { foreach( $post_types as $key => $post_type ) { $count_posts = wp_count_posts( $key ); $post_counts[$key] = array_sum( (array)$count_posts ); $post_ids[$key] = woo_st_get_custom_post_type_ids( $key ); } } break; case 'tools': $autocomplete_order = get_option( WOO_ST_PREFIX . '_autocomplete_order', 0 ); $unlock_variations = get_option( WOO_ST_PREFIX . '_unlock_variations', 0 ); $unlock_related_orders = get_option( WOO_ST_PREFIX . '_unlock_related_orders', 0 ); break; case 'settings': $troubleshooting_url = 'https://www.visser.com.au/documentation/store-toolkit/'; $permanently_delete_products = woo_st_get_option( 'permanently_delete_products', 1 ); $enable_cron = woo_st_get_option( 'enable_cron', 0 ); $secret_key = woo_st_get_option( 'secret_key', '' ); break; } if( $tab ) { if( file_exists( WOO_ST_PATH . 'templates/admin/tabs-' . $tab . '.php' ) ) { include_once( WOO_ST_PATH . 'templates/admin/tabs-' . $tab . '.php' ); } else { $message = sprintf( __( 'We couldn\'t load the export template file <code>%s</code> within <code>%s</code>, this file should be present.', 'woocommerce-store-toolkit' ), 'tabs-' . esc_attr( $tab ) . '.php', WOO_CD_PATH . 'templates/admin/...' ); woo_st_admin_notice_html( $message, 'error' ); ob_start(); ?> <p><?php _e( 'You can see this error for one of a few common reasons', 'woocommerce-store-toolkit' ); ?>:</p> <ul class="ul-disc"> <li><?php _e( 'WordPress was unable to create this file when the Plugin was installed or updated', 'woocommerce-store-toolkit' ); ?></li> <li><?php _e( 'The Plugin files have been recently changed and there has been a file conflict', 'woocommerce-store-toolkit' ); ?></li> <li><?php _e( 'The Plugin file has been locked and cannot be opened by WordPress', 'woocommerce-store-toolkit' ); ?></li> </ul> <p><?php _e( 'Jump onto our website and download a fresh copy of this Plugin as it might be enough to fix this issue. If this persists get in touch with us.', 'woocommerce-store-toolkit' ); ?></p> <?php ob_end_flush(); } } } function woo_st_admin_order_column_headers( $columns ) { // Check if another Plugin has registered this column if( !isset( $columns['user'] ) ) { $pos = array_search( 'order_total', array_keys( $columns ) ); $columns = array_merge( array_slice( $columns, 0, $pos ), array( 'user' => __( 'User ID', 'woocommerce-store-toolkit' ) ), array_slice( $columns, $pos ) ); } return $columns; } function woo_st_admin_order_column_content( $column, $post_or_order_object ) { if( $column == 'user' ) { $order = ( $post_or_order_object instanceof WC_Order ) ? $post_or_order_object : wc_get_order( $post_or_order_object ); $user_id = $order->get_user_id(); if( !empty( $user_id ) ) { $url = get_edit_user_link( $user_id ); echo '<a href="' . esc_url( $url ) . '">'; echo esc_html( sprintf( '#%d', $user_id ) ); echo '</a>'; } else { echo '-'; } // Allow Plugin/Theme authors to add their own content within this column do_action( 'woo_st_admin_order_user_column_content', $order ); } } function woo_st_add_user_column( $columns ) { if( !current_user_can( 'manage_woocommerce' ) ) return $columns; $last_column = array_slice( $columns, -1, 1, true ); array_pop( $columns ); $columns['woocommerce_orders'] = __( 'Orders', 'woocommerce-store-toolkit' ); $columns += $last_column; return $columns; } function woo_st_user_column_values( $value, $column_name, $user_id ) { if( $column_name <> 'woocommerce_orders' ) return $value; $value = '0'; $args = array( 'fields' => 'ids' ); $orders = woo_st_get_user_orders( $user_id, $args ); if( !empty( $orders ) ) $value = count( $orders ); return $value; } function woo_st_woocommerce_register_post_type() { // So we can view the Edit Product screen for individual Variations $unlock_variations = get_option( WOO_ST_PREFIX . '_unlock_variations', 0 ); if( !empty( $unlock_variations ) ) { add_filter( 'woocommerce_register_post_type_product_variation', 'woo_st_admin_unlock_variations_screen', 10, 1 ); } } add_action( 'woocommerce_register_post_type', 'woo_st_woocommerce_register_post_type' ); function woo_st_extend_woocommerce_system_status_report() { global $_wp_additional_image_sizes; $image_sizes = get_intermediate_image_sizes(); ob_start(); ?> <table class="wc_status_table widefat" cellspacing="0"> <thead> <tr> <th colspan="2" data-export-label="Templates"><?php _e( 'Image Sizes', 'woocommerce-store-toolkit' ); ?><?php echo wc_help_tip( __( 'This section shows all available WordPress Image Sizes.', 'woocommerce-exporter' ) ); ?></th> </tr> </thead> <tbody> <?php if( !empty( $image_sizes ) ) { ?> <?php foreach( $image_sizes as $image_size ) { ?> <tr> <td><?php echo esc_html( $image_size ); ?></td> <td> <?php if( isset( $_wp_additional_image_sizes[$image_size] ) ) { ?> <?php echo esc_html( print_r( $_wp_additional_image_sizes[$image_size], true ) ); ?> <?php } else { ?> <?php // Check for default WordPress Image Sizes $size_info = array(); switch( $image_size ) { case 'thumbnail': $size_info = array( 'width' => get_option( 'thumbnail_size_w' ), 'height' => get_option( 'thumbnail_size_h' ), 'crop' => get_option( 'thumbnail_crop' ) ); break; case 'medium': $size_info = array( 'width' => get_option( 'medium_size_w' ), 'height' => get_option( 'medium_size_h' ) ); break; case 'medium_large': $size_info = array( 'width' => get_option( 'medium_large_size_w' ), 'height' => get_option( 'medium_large_size_h' ) ); case 'large': $size_info = array( 'width' => get_option( 'large_size_w' ), 'height' => get_option( 'large_size_h' ) ); break; } ?> <?php echo esc_html( !empty( $size_info ) ? print_r( $size_info, true ) : '-' ); ?> <?php } ?> </td> </tr> <?php } ?> <?php } else { ?> <tr> <td colspan="2"><?php _e( 'No Image Sizes were available.', 'woocommerce-store-toolkit' ); ?></td> </tr> <?php } ?> </tbody> </table> <?php ob_end_flush(); } add_action( 'woocommerce_system_status_report', 'woo_st_extend_woocommerce_system_status_report' );