2017-11-04 2 views

Antwort

0

Dieser Code wird Produkte aus dem Katalog und Suche deaktivieren, wenn regulärer Preis NULL ist und die deaktivierten Produkte, wenn regulärer Preis ist nicht NULL mehr wieder aktivieren:

add_action('init', 'action_on_product_reg_price'); 
function action_on_product_reg_price(){ 
    global $wpdb; 

    // First query: Get the product Ids that have a NULL regular price 
    $product_ids = $wpdb->get_col(" 
     SELECT DISTINCT pm.post_id as product_id 
     FROM {$wpdb->prefix}postmeta as pm 
     LEFT JOIN {$wpdb->prefix}postmeta AS pm2 ON pm2.post_id = pm.post_id 
     WHERE (pm.meta_key = '_regular_price' 
     AND (pm.meta_value IS NULL 
     OR pm.meta_value LIKE 'null')) 
     OR (pm2.meta_key LIKE '_force_visibility' 
     AND pm2.meta_value IS NOT NULL) 
    "); 

    // Disable the products from catalog and search 
    if(count($product_ids) > 0){ 
     foreach($product_ids as $product_id){ 
      $product = wc_get_product($product_id); 
      if($product->get_catalog_visibility() != 'hidden') { 
       $product->set_catalog_visibility('hidden'); // visible 
       $product->save(); 
       update_post_meta($product_id, '_force_visibility', 1); 
      } 
     } 
    } 

    // 2nd query: Get the product Ids that have changed from NULL regular price 
    $product_ids = $wpdb->get_col(" 
     SELECT DISTINCT pm.post_id as product_id 
     FROM {$wpdb->prefix}postmeta as pm 
     INNER JOIN {$wpdb->prefix}postmeta AS pm2 ON pm2.post_id = pm.post_id 
     WHERE pm.meta_key = '_regular_price' 
     AND (pm.meta_value IS NOT NULL 
     OR pm.meta_value NOT LIKE 'null') 
     AND pm2.meta_key LIKE '_force_visibility' 
     AND pm2.meta_value = '1' 
    "); 

    // Re-enable catolog and search visibility 
    if(count($product_ids) > 0){ 
     foreach($product_ids as $product_id){ 
      $product = wc_get_product($product_id); 
      if($product->get_catalog_visibility() != 'visible') { 
       $product->set_catalog_visibility('visible'); // visible 
       $product->save(); 
       update_post_meta($product_id, '_force_visibility', NULL); 
      } 
     } 
    } 
} 

-Code geht in Funktion. PHP-Datei Ihres aktiven untergeordneten Themas (oder Themas) oder auch in einer beliebigen Plugin-Datei.

Getestet und funktioniert auf WooCommerce 3+

Verwandte Themen