Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/woocomme.../src/Internal
File: AssignDefaultCategory.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* AssignDefaultCategory class file.
[2] Fix | Delete
*/
[3] Fix | Delete
[4] Fix | Delete
namespace Automattic\WooCommerce\Internal;
[5] Fix | Delete
[6] Fix | Delete
defined( 'ABSPATH' ) || exit;
[7] Fix | Delete
[8] Fix | Delete
/**
[9] Fix | Delete
* Class to assign default category to products.
[10] Fix | Delete
*/
[11] Fix | Delete
class AssignDefaultCategory {
[12] Fix | Delete
/**
[13] Fix | Delete
* Class initialization, to be executed when the class is resolved by the container.
[14] Fix | Delete
*
[15] Fix | Delete
* @internal
[16] Fix | Delete
*/
[17] Fix | Delete
final public function init() {
[18] Fix | Delete
add_action( 'wc_schedule_update_product_default_cat', array( $this, 'maybe_assign_default_product_cat' ) );
[19] Fix | Delete
}
[20] Fix | Delete
[21] Fix | Delete
/**
[22] Fix | Delete
* When a product category is deleted, we need to check
[23] Fix | Delete
* if the product has no categories assigned. Then assign
[24] Fix | Delete
* it a default category. We delay this with a scheduled
[25] Fix | Delete
* action job to not block the response.
[26] Fix | Delete
*
[27] Fix | Delete
* @return void
[28] Fix | Delete
*/
[29] Fix | Delete
public function schedule_action() {
[30] Fix | Delete
WC()->queue()->schedule_single(
[31] Fix | Delete
time(),
[32] Fix | Delete
'wc_schedule_update_product_default_cat',
[33] Fix | Delete
array(),
[34] Fix | Delete
'wc_update_product_default_cat'
[35] Fix | Delete
);
[36] Fix | Delete
}
[37] Fix | Delete
[38] Fix | Delete
/**
[39] Fix | Delete
* Assigns default product category for products
[40] Fix | Delete
* that have no categories.
[41] Fix | Delete
*
[42] Fix | Delete
* @return void
[43] Fix | Delete
*/
[44] Fix | Delete
public function maybe_assign_default_product_cat() {
[45] Fix | Delete
global $wpdb;
[46] Fix | Delete
[47] Fix | Delete
$default_category = get_option( 'default_product_cat', 0 );
[48] Fix | Delete
[49] Fix | Delete
if ( $default_category ) {
[50] Fix | Delete
$affected_rows = $wpdb->query(
[51] Fix | Delete
$wpdb->prepare(
[52] Fix | Delete
"INSERT INTO {$wpdb->term_relationships} (object_id, term_taxonomy_id)
[53] Fix | Delete
SELECT DISTINCT posts.ID, %s FROM {$wpdb->posts} posts
[54] Fix | Delete
LEFT JOIN
[55] Fix | Delete
(
[56] Fix | Delete
SELECT object_id FROM {$wpdb->term_relationships} term_relationships
[57] Fix | Delete
LEFT JOIN {$wpdb->term_taxonomy} term_taxonomy ON term_relationships.term_taxonomy_id = term_taxonomy.term_taxonomy_id
[58] Fix | Delete
WHERE term_taxonomy.taxonomy = 'product_cat'
[59] Fix | Delete
) AS tax_query
[60] Fix | Delete
ON posts.ID = tax_query.object_id
[61] Fix | Delete
WHERE posts.post_type = 'product'
[62] Fix | Delete
AND tax_query.object_id IS NULL",
[63] Fix | Delete
$default_category
[64] Fix | Delete
)
[65] Fix | Delete
);
[66] Fix | Delete
if ( $affected_rows > 0 ) {
[67] Fix | Delete
wp_cache_flush();
[68] Fix | Delete
delete_transient( 'wc_term_counts' );
[69] Fix | Delete
wp_update_term_count_now( array( $default_category ), 'product_cat' );
[70] Fix | Delete
}
[71] Fix | Delete
}
[72] Fix | Delete
}
[73] Fix | Delete
}
[74] Fix | Delete
[75] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function