É possível desativar o cache de uma opção ao usar o cache total do w3?

Um plugin no qual estou trabalhando tem um conflito com o cache total do w3. Para ser mais específico, no meu código, eu tenho

static function get_instance() { if( self::$_instance === NULL ) { // get the settings from the database self::$_instance = get_option( 'ai1ec_settings' ); // if there are no settings in the database // save default values for the settings if( ! self::$_instance ) { self::$_instance = new self(); delete_option( 'ai1ec_settings' ); add_option( 'ai1ec_settings', self::$_instance ); } else { self::$_instance->set_defaults(); // set default settings } } return self::$_instance; } 

O problema reside em self::$_instance = get_option( 'ai1ec_settings' ); porque um object incompleto é retornado (isso acontece somente ao usar o cache total do w3, eu declarei um carregador automático, mas fazendo alguma debugging parece que o object incompleto está armazenado no cache)

Esta é a mensagem de erro

Ai1ec_Settings :: get_instance (): O script tentou executar um método ou acessar uma propriedade de um object incompleto. Certifique-se de que a definição de class “Ai1ec_Settings” do object que você está tentando operar foi carregada antes que unserialize () seja chamado ou forneça uma function __autoload () para carregar a definição da class

1) Existe uma maneira de dizer o cache total do w3 para não armazenar essa opção?
2) Caso contrário, seria correto lidar com coisas assim?

 try { self::$_instance = self::getOptionsFromDb(); } catch (Exception $e) { //Show a friendly error page } private static function getOptionsFromDb(){ $ai1ec_settings = get_option( 'ai1ec_settings' ); if ( ! $ai1ec_settings instanceof self ) { if (false === $ai1ec_settings) { return false; //option was not set in the db } elseif( class_exists('W3_Plugin_TotalCacheAdmin') ){ //let's clear thew cache and try again $plugin_totalcacheadmin = & w3_instance('W3_Plugin_TotalCacheAdmin'); $plugin_totalcacheadmin->flush_all(); $ai1ec_settings = get_option( 'ai1ec_settings' ); if ( $ai1ec_settings instanceof self ) { return $ai1ec_settings; } else { throw new Exception(); } } else { throw new Exception(); } } } 

Solutions Collecting From Web of "É possível desativar o cache de uma opção ao usar o cache total do w3?"

Tudo bem, vamos lá. tente isso: em suas functions.php, modifique o comportamento de ai1ec_options:

 $ai1ec_options = get_option('ai1ec_options'); delete_option('ai1ec_options'); add_option('ai1ec_options', $ai1ec_options, '', 'no'); // thanks for your suggestion :) 

Seja cuidadoso, pois você pode perder as opções definidas, então, assegure-se de obtê-las primeiro do database. ou crie uma opção de backup. Depois, limpe os caches e tente novamente.

Eu estava apenas lutando com isso na página.ly, que usa o W3TC e, em seguida, o Memcached para o cache de objects.

Olhando como ai1ec resolveu, a solução parece ser:

 wp_cache_delete( 'alloptions', 'options' ); 

Isso foi confirmado pela page.ly encontrado no ticket de suporte que estava discutindo o problema em.