File: /var/www/dinamo-shop/wp-content/plugins/woocommerce-multilingual/classes/AdminDashboard/Hooks.php
<?php
namespace WCML\AdminDashboard;
use WPML\Core\ISitePress;
use WCML\StandAlone\NullSitePress;
use SitePress;
use wpdb;
use IWPML_DIC_Action;
use IWPML_Backend_Action;
class Hooks implements IWPML_Backend_Action, IWPML_DIC_Action {
/** @var SitePress|NullSitePress $sitepress */
private $sitepress;
/** @var wpdb $wpdb */
private $wpdb;
/**
* @param SitePress|NullSitePress $sitepress
* @param wpdb $wpdb
*/
public function __construct( ISitePress $sitepress, wpdb $wpdb ) {
$this->sitepress = $sitepress;
$this->wpdb = $wpdb;
}
public function add_hooks() {
add_action( 'wp_dashboard_setup', [ $this, 'clearStockTransients' ] );
add_filter( 'woocommerce_status_widget_low_in_stock_count_query', [ $this, 'addLanguageQuery' ] );
add_filter( 'woocommerce_status_widget_out_of_stock_count_query', [ $this, 'addLanguageQuery' ] );
}
public function clearStockTransients() {
delete_transient( 'wc_outofstock_count' );
delete_transient( 'wc_low_stock_count' );
}
/**
* @param string $query
*
* @return string
*/
public function addLanguageQuery( $query ) {
$currentLanguage = $this->sitepress->get_current_language();
if ( $currentLanguage !== 'all' ) {
$languageQuery = $this->wpdb->prepare(
" INNER JOIN {$this->wpdb->prefix}icl_translations AS t
ON posts.ID = t.element_id AND t.element_type IN ( 'post_product', 'post_product_variation' )
WHERE t.language_code = %s AND ",
$currentLanguage );
return str_replace( 'WHERE', $languageQuery, $query );
}
return $query;
}
}