mercredi 11 mai 2016

Wordpress: How to flush cached option value

I am currently working on a plugin, and I am stuck with an issue. I executed an SQL request on my database through PhpMyAdmin (which I implemented later through a plugin update mechanism), the request looked like this:

UPDATE `wp_options` 
    SET `option_value` = replace( `option_value` , 'model', 'ldp_model' ) 
WHERE `option_name` LIKE 'ldp_container%'

As you can see, I am updating all options value having name beginning by 'ldp_container'. Later in the code execution, when I am retrieving the option value, I am getting a value being false using:

$termId = $term->term_id;
$termMeta = get_option("ldp_container_$termId"); // $termMeta = false

I looked in this issue, and I got to the point where it seems that when I update/create this option, as I used:

update_option("ldp_container_$termID", $termMeta);

instead of

update_option("ldp_container_$termID", $termMeta, false);

The value of this option become part of the alloptions cache. So, retrieving it always return false now, and I do not know how to flush this cache.

Using a plugin update mechanism based on version number, I tried to flush the Wordpress object cache using:

$flush_cache = wp_cache_flush(); // returns true

And the Database query cache too:

$wpdb->flush();

I also tried explicitely deleting those options keys from the cache using a query then looping on results and calling wp_cache_delete:

  $result = $wpdb->get_results(
      "SELECT 'option_name'
       FROM $wpdb->options
       WHERE 'option_name' LIKE '%ldp_container_%';"
    );

    foreach ( $result as $current ) {
      wp_cache_delete($current, 'options');
    }

Still, no luck.

Does anybody have a clue for me here ?

Thanks,



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire