如何在WordPress中编写更新查询以终止瞬变

时间:2017-04-22 作者:smarttechy

我想编写更新查询来终止瞬态。我会在wordpress选项表中将他们的时间增加到1。

我对更新的查询是

$wpdb->update( 
    \'options\', 
    array( 
        \'option_value\' => \'1\',  // string

    ), 
    array( \'option_name\' => \'%re_compare%\' )

);
它不起作用。基本上,我想删除/终止已经存在的瞬态。

但若我从选项表中删除瞬态,它们仍会显示在瞬态管理器插件中。所以想把过期时间设为1秒。

2 个回复
SO网友:Rarst

瞬态根本不能保证使用数据库。如果启用了对象缓存,它们将使用对象缓存。

而且,由于对象缓存API中没有大容量删除,因此实际上没有可靠的方法来清除所有可能环境中的瞬态。

有一些性能方面的原因需要将它们从数据库中清除(core现在正在升级),但您的程序逻辑应该远离它。

至于为什么在你的情况下它会失败,很难说。您需要确定正在使用的存储以及要测试的原始SQL查询。

SO网友:JItendra Rana

尝试按以下方式删除瞬态。它应该会起作用。

global $wpdb; 
$sql = \'DELETE FROM \' . $wpdb->options . \' WHERE option_name LIKE "_transient_%"\'; 
$wpdb->query($sql); 
或者您可以尝试使用此插件删除过期的瞬态

https://wordpress.org/plugins/delete-expired-transients/

Edit : 要将瞬态值更新为1,请使用以下查询

$sql = \'UPDATE \' . $wpdb->options . \' SET option_value = 1 WHERE option_name LIKE "_transient_%"\'; 
我刚刚尝试使用上述查询删除临时数据,它从选项表中删除了1500多行。因此,quoery应该起作用。可能您的站点正在使用对象缓存来存储@Rarst指出的临时数据。

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post