• Resolved adam1414

    (@adam1414)


    Hi all,

    At a loss here. If I log into the backend and update a product in the dashboard to add/remove an attribute, the cache will be cleared properly and the product will filter properly. All works as it should.

    However, I need to add/update products programmatically. I’ve tried the following:

    $wc_data_store = new ReflectionMethod(‘WC_Product_Data_Store_CPT’, ‘update_lookup_table’);
    $wc_data_store->setAccessible(true);

    /// update product code goes here

    wp_cache_delete($success, ‘post_meta’);
    if (isset($wc_data_store)) $wc_data_store->invokeArgs(new WC_Product_Data_Store_CPT, array($success, ‘wc_product_meta_lookup’));

    … and when that didn’t work, I tried the following …

    // update product code goes here … then call following procedure each product to clear cache
    public static function flushCacheUpdateLookupTable($the_product)
    {
    $product = wc_get_product($the_product);
    if ($product) {
    $id = $product->get_id();
    wc_delete_product_transients($id);
    wp_cache_delete($id, ‘post_meta’);
    wp_cache_delete($id, ‘posts’);
    wp_cache_delete(‘lookup_table’, ‘object_’ . $id);
    $productType = $product->get_type();

    $datastoreType = ‘product’;
    switch ($productType) {
    case ‘variable’:
    case ‘grouped’:
    case ‘variation’:
    $datastoreType .= ‘-‘ . $productType;
    }
    $data_store = \WC_Data_Store::load($datastoreType);

    if (method_exists(‘WC_Product_Data_Store_CPT’, ‘update_lookup_table’)) {
    $product_data_store = new \WC_Product_Data_Store_CPT();
    $reflection = new \ReflectionMethod($product_data_store, ‘update_lookup_table’);
    if ($reflection->isPublic()) {
    $data_store->update_lookup_table($id, ‘wc_product_meta_lookup’);
    } else {
    //in the meantime an increase of zero in the product sales will force the update…
    $data_store->update_product_sales($id, 0, ‘increase’);
    }
    }
    }
    }`

    I’ve tried to go into the tools and manually press every button to do with clearing transients, rebuilding, regenerating, etc. I can’t get the cache to clear properly so that the products are filtered by attribute unless I go into the product and manually add/remove the attributes to trigger the updating of the attribute cache.

    Any thoughts are appreciated, been at this for a few days now without anything working.

    The page I need help with: [log in to see the link]

Viewing 2 replies - 1 through 2 (of 2 total)
Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Clear WC Cache, Unable to Filter by Attributes’ is closed to new replies.