Merge pull request #22318 from Prospress/fix/21202
Only include the network orders widget on the main site dashboard
This commit is contained in:
commit
10518228aa
|
@ -2,14 +2,12 @@
|
||||||
/**
|
/**
|
||||||
* Admin Dashboard
|
* Admin Dashboard
|
||||||
*
|
*
|
||||||
* @author WooThemes
|
|
||||||
* @category Admin
|
|
||||||
* @package WooCommerce/Admin
|
* @package WooCommerce/Admin
|
||||||
* @version 2.1.0
|
* @version 2.1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
exit; // Exit if accessed directly
|
exit; // Exit if accessed directly.
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
|
@ -23,7 +21,7 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
* Hook in tabs.
|
* Hook in tabs.
|
||||||
*/
|
*/
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
// Only hook in admin parts if the user has admin access
|
// Only hook in admin parts if the user has admin access.
|
||||||
if ( current_user_can( 'view_woocommerce_reports' ) || current_user_can( 'manage_woocommerce' ) || current_user_can( 'publish_shop_orders' ) ) {
|
if ( current_user_can( 'view_woocommerce_reports' ) || current_user_can( 'manage_woocommerce' ) || current_user_can( 'publish_shop_orders' ) ) {
|
||||||
// If on network admin, only load the widget that works in that context and skip the rest.
|
// If on network admin, only load the widget that works in that context and skip the rest.
|
||||||
if ( is_multisite() && is_network_admin() ) {
|
if ( is_multisite() && is_network_admin() ) {
|
||||||
|
@ -44,7 +42,7 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
wp_add_dashboard_widget( 'woocommerce_dashboard_status', __( 'WooCommerce Status', 'woocommerce' ), array( $this, 'status_widget' ) );
|
wp_add_dashboard_widget( 'woocommerce_dashboard_status', __( 'WooCommerce Status', 'woocommerce' ), array( $this, 'status_widget' ) );
|
||||||
|
|
||||||
// Network Order Widget.
|
// Network Order Widget.
|
||||||
if ( is_multisite() ) {
|
if ( is_multisite() && is_main_site() ) {
|
||||||
$this->register_network_order_widget();
|
$this->register_network_order_widget();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,39 +108,43 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
|
|
||||||
echo '<ul class="wc_status_list">';
|
echo '<ul class="wc_status_list">';
|
||||||
|
|
||||||
if ( current_user_can( 'view_woocommerce_reports' ) && ( $report_data = $this->get_sales_report_data() ) ) {
|
if ( current_user_can( 'view_woocommerce_reports' ) ) {
|
||||||
?>
|
$report_data = $this->get_sales_report_data();
|
||||||
|
if ( $report_data ) {
|
||||||
|
?>
|
||||||
<li class="sales-this-month">
|
<li class="sales-this-month">
|
||||||
<a href="<?php echo admin_url( 'admin.php?page=wc-reports&tab=orders&range=month' ); ?>">
|
<a href="<?php echo esc_url( admin_url( 'admin.php?page=wc-reports&tab=orders&range=month' ) ); ?>">
|
||||||
<?php echo $reports->sales_sparkline( '', max( 7, date( 'd', current_time( 'timestamp' ) ) ) ); ?>
|
<?php echo $reports->sales_sparkline( '', max( 7, date( 'd', current_time( 'timestamp' ) ) ) ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped ?>
|
||||||
<?php
|
<?php
|
||||||
/* translators: %s: net sales */
|
|
||||||
printf(
|
printf(
|
||||||
__( '%s net sales this month', 'woocommerce' ),
|
/* translators: %s: net sales */
|
||||||
|
esc_html__( '%s net sales this month', 'woocommerce' ),
|
||||||
'<strong>' . wc_price( $report_data->net_sales ) . '</strong>'
|
'<strong>' . wc_price( $report_data->net_sales ) . '</strong>'
|
||||||
);
|
); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
||||||
?>
|
?>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<?php
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( current_user_can( 'view_woocommerce_reports' ) && ( $top_seller = $this->get_top_seller() ) && $top_seller->qty ) {
|
|
||||||
?>
|
|
||||||
<li class="best-seller-this-month">
|
|
||||||
<a href="<?php echo admin_url( 'admin.php?page=wc-reports&tab=orders&report=sales_by_product&range=month&product_ids=' . $top_seller->product_id ); ?>">
|
|
||||||
<?php echo $reports->sales_sparkline( $top_seller->product_id, max( 7, date( 'd', current_time( 'timestamp' ) ) ), 'count' ); ?>
|
|
||||||
<?php
|
<?php
|
||||||
/* translators: 1: top seller product title 2: top seller quantity */
|
}
|
||||||
|
|
||||||
|
$top_seller = $this->get_top_seller();
|
||||||
|
if ( $top_seller && $top_seller->qty ) {
|
||||||
|
?>
|
||||||
|
<li class="best-seller-this-month">
|
||||||
|
<a href="<?php echo esc_url( admin_url( 'admin.php?page=wc-reports&tab=orders&report=sales_by_product&range=month&product_ids=' . $top_seller->product_id ) ); ?>">
|
||||||
|
<?php echo $reports->sales_sparkline( $top_seller->product_id, max( 7, date( 'd', current_time( 'timestamp' ) ) ), 'count' ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped ?>
|
||||||
|
<?php
|
||||||
printf(
|
printf(
|
||||||
__( '%1$s top seller this month (sold %2$d)', 'woocommerce' ),
|
/* translators: 1: top seller product title 2: top seller quantity */
|
||||||
|
esc_html__( '%1$s top seller this month (sold %2$d)', 'woocommerce' ),
|
||||||
'<strong>' . get_the_title( $top_seller->product_id ) . '</strong>',
|
'<strong>' . get_the_title( $top_seller->product_id ) . '</strong>',
|
||||||
$top_seller->qty
|
$top_seller->qty
|
||||||
);
|
); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
||||||
?>
|
?>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<?php
|
<?php
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->status_widget_order_rows();
|
$this->status_widget_order_rows();
|
||||||
|
@ -169,24 +171,24 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<li class="processing-orders">
|
<li class="processing-orders">
|
||||||
<a href="<?php echo admin_url( 'edit.php?post_status=wc-processing&post_type=shop_order' ); ?>">
|
<a href="<?php echo esc_url( admin_url( 'edit.php?post_status=wc-processing&post_type=shop_order' ) ); ?>">
|
||||||
<?php
|
<?php
|
||||||
/* translators: %s: order count */
|
|
||||||
printf(
|
printf(
|
||||||
|
/* translators: %s: order count */
|
||||||
_n( '<strong>%s order</strong> awaiting processing', '<strong>%s orders</strong> awaiting processing', $processing_count, 'woocommerce' ),
|
_n( '<strong>%s order</strong> awaiting processing', '<strong>%s orders</strong> awaiting processing', $processing_count, 'woocommerce' ),
|
||||||
$processing_count
|
$processing_count
|
||||||
);
|
); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
||||||
?>
|
?>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="on-hold-orders">
|
<li class="on-hold-orders">
|
||||||
<a href="<?php echo admin_url( 'edit.php?post_status=wc-on-hold&post_type=shop_order' ); ?>">
|
<a href="<?php echo esc_url( admin_url( 'edit.php?post_status=wc-on-hold&post_type=shop_order' ) ); ?>">
|
||||||
<?php
|
<?php
|
||||||
/* translators: %s: order count */
|
|
||||||
printf(
|
printf(
|
||||||
|
/* translators: %s: order count */
|
||||||
_n( '<strong>%s order</strong> on-hold', '<strong>%s orders</strong> on-hold', $on_hold_count, 'woocommerce' ),
|
_n( '<strong>%s order</strong> on-hold', '<strong>%s orders</strong> on-hold', $on_hold_count, 'woocommerce' ),
|
||||||
$on_hold_count
|
$on_hold_count
|
||||||
);
|
); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
||||||
?>
|
?>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -199,12 +201,13 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
private function status_widget_stock_rows() {
|
private function status_widget_stock_rows() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
// Get products using a query - this is too advanced for get_posts :(
|
// Get products using a query - this is too advanced for get_posts.
|
||||||
$stock = absint( max( get_option( 'woocommerce_notify_low_stock_amount' ), 1 ) );
|
$stock = absint( max( get_option( 'woocommerce_notify_low_stock_amount' ), 1 ) );
|
||||||
$nostock = absint( max( get_option( 'woocommerce_notify_no_stock_amount' ), 0 ) );
|
$nostock = absint( max( get_option( 'woocommerce_notify_no_stock_amount' ), 0 ) );
|
||||||
$transient_name = 'wc_low_stock_count';
|
$transient_name = 'wc_low_stock_count';
|
||||||
|
|
||||||
if ( false === ( $lowinstock_count = get_transient( $transient_name ) ) ) {
|
$lowinstock_count = get_transient( $transient_name );
|
||||||
|
if ( false === $lowinstock_count ) {
|
||||||
$query_from = apply_filters(
|
$query_from = apply_filters(
|
||||||
'woocommerce_report_low_in_stock_query_from',
|
'woocommerce_report_low_in_stock_query_from',
|
||||||
"FROM {$wpdb->posts} as posts
|
"FROM {$wpdb->posts} as posts
|
||||||
|
@ -223,7 +226,8 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
|
|
||||||
$transient_name = 'wc_outofstock_count';
|
$transient_name = 'wc_outofstock_count';
|
||||||
|
|
||||||
if ( false === ( $outofstock_count = get_transient( $transient_name ) ) ) {
|
$outofstock_count = get_transient( $transient_name );
|
||||||
|
if ( false === $outofstock_count ) {
|
||||||
$query_from = apply_filters(
|
$query_from = apply_filters(
|
||||||
'woocommerce_report_out_of_stock_query_from',
|
'woocommerce_report_out_of_stock_query_from',
|
||||||
"FROM {$wpdb->posts} as posts
|
"FROM {$wpdb->posts} as posts
|
||||||
|
@ -240,24 +244,24 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<li class="low-in-stock">
|
<li class="low-in-stock">
|
||||||
<a href="<?php echo admin_url( 'admin.php?page=wc-reports&tab=stock&report=low_in_stock' ); ?>">
|
<a href="<?php echo esc_url( admin_url( 'admin.php?page=wc-reports&tab=stock&report=low_in_stock' ) ); ?>">
|
||||||
<?php
|
<?php
|
||||||
/* translators: %s: order count */
|
|
||||||
printf(
|
printf(
|
||||||
|
/* translators: %s: order count */
|
||||||
_n( '<strong>%s product</strong> low in stock', '<strong>%s products</strong> low in stock', $lowinstock_count, 'woocommerce' ),
|
_n( '<strong>%s product</strong> low in stock', '<strong>%s products</strong> low in stock', $lowinstock_count, 'woocommerce' ),
|
||||||
$lowinstock_count
|
$lowinstock_count
|
||||||
);
|
); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
||||||
?>
|
?>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="out-of-stock">
|
<li class="out-of-stock">
|
||||||
<a href="<?php echo admin_url( 'admin.php?page=wc-reports&tab=stock&report=out_of_stock' ); ?>">
|
<a href="<?php echo esc_url( admin_url( 'admin.php?page=wc-reports&tab=stock&report=out_of_stock' ) ); ?>">
|
||||||
<?php
|
<?php
|
||||||
/* translators: %s: order count */
|
|
||||||
printf(
|
printf(
|
||||||
|
/* translators: %s: order count */
|
||||||
_n( '<strong>%s product</strong> out of stock', '<strong>%s products</strong> out of stock', $outofstock_count, 'woocommerce' ),
|
_n( '<strong>%s product</strong> out of stock', '<strong>%s products</strong> out of stock', $outofstock_count, 'woocommerce' ),
|
||||||
$outofstock_count
|
$outofstock_count
|
||||||
);
|
); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
||||||
?>
|
?>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -298,16 +302,16 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
$rating = intval( get_comment_meta( $comment->comment_ID, 'rating', true ) );
|
$rating = intval( get_comment_meta( $comment->comment_ID, 'rating', true ) );
|
||||||
|
|
||||||
/* translators: %s: rating */
|
/* translators: %s: rating */
|
||||||
echo '<div class="star-rating"><span style="width:' . ( $rating * 20 ) . '%">' . sprintf( __( '%s out of 5', 'woocommerce' ), $rating ) . '</span></div>';
|
echo '<div class="star-rating"><span style="width:' . esc_html( $rating * 20 ) . '%">' . sprintf( esc_html__( '%s out of 5', 'woocommerce' ), esc_html( $rating ) ) . '</span></div>';
|
||||||
|
|
||||||
/* translators: %s: review author */
|
/* translators: %s: review author */
|
||||||
echo '<h4 class="meta"><a href="' . get_permalink( $comment->ID ) . '#comment-' . absint( $comment->comment_ID ) . '">' . esc_html( apply_filters( 'woocommerce_admin_dashboard_recent_reviews', $comment->post_title, $comment ) ) . '</a> ' . sprintf( __( 'reviewed by %s', 'woocommerce' ), esc_html( $comment->comment_author ) ) . '</h4>';
|
echo '<h4 class="meta"><a href="' . esc_url( get_permalink( $comment->ID ) ) . '#comment-' . esc_html( absint( $comment->comment_ID ) ) . '">' . esc_html( apply_filters( 'woocommerce_admin_dashboard_recent_reviews', $comment->post_title, $comment ) ) . '</a> ' . sprintf( esc_html__( 'reviewed by %s', 'woocommerce' ), esc_html( $comment->comment_author ) ) . '</h4>';
|
||||||
echo '<blockquote>' . wp_kses_data( $comment->comment_content ) . '</blockquote></li>';
|
echo '<blockquote>' . wp_kses_data( $comment->comment_content ) . '</blockquote></li>';
|
||||||
|
|
||||||
}
|
}
|
||||||
echo '</ul>';
|
echo '</ul>';
|
||||||
} else {
|
} else {
|
||||||
echo '<p>' . __( 'There are no product reviews yet.', 'woocommerce' ) . '</p>';
|
echo '<p>' . esc_html__( 'There are no product reviews yet.', 'woocommerce' ) . '</p>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -326,7 +330,9 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
$blog_ids = wp_list_pluck( $blogs, 'userblog_id' );
|
$blog_ids = wp_list_pluck( $blogs, 'userblog_id' );
|
||||||
|
|
||||||
wp_localize_script(
|
wp_localize_script(
|
||||||
'wc-network-orders', 'woocommerce_network_orders', array(
|
'wc-network-orders',
|
||||||
|
'woocommerce_network_orders',
|
||||||
|
array(
|
||||||
'nonce' => wp_create_nonce( 'wp_rest' ),
|
'nonce' => wp_create_nonce( 'wp_rest' ),
|
||||||
'sites' => array_values( $blog_ids ),
|
'sites' => array_values( $blog_ids ),
|
||||||
'order_endpoint' => get_rest_url( null, 'wc/v3/orders/network' ),
|
'order_endpoint' => get_rest_url( null, 'wc/v3/orders/network' ),
|
||||||
|
@ -357,6 +363,7 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
<?php esc_html_e( 'No orders found', 'woocommerce' ); ?>
|
<?php esc_html_e( 'No orders found', 'woocommerce' ); ?>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<?php // @codingStandardsIgnoreStart ?>
|
||||||
<script type="text/template" id="network-orders-row-template">
|
<script type="text/template" id="network-orders-row-template">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
|
@ -374,8 +381,9 @@ if ( ! class_exists( 'WC_Admin_Dashboard', false ) ) :
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</script>
|
</script>
|
||||||
|
<?php // @codingStandardsIgnoreEnd ?>
|
||||||
</div>
|
</div>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue