這種情況通常是由於WordPress中使用了緩存機制所導致的。當您在WordPress中執行更新操作時,$wpdb對象會將數據存儲到內存中,並在下一次查詢相同的數據時,優先從內存中獲取數據,而不是從數據庫中獲取數據。這種緩存機制可以提高查詢性能,但也可能導致數據在更新後不立即生效的問題。
要解決這個問題,您可以在更新數據後強制刷新$wpdb對象的緩存,以確保下一次查詢會從數據庫中獲取最新的數據。在WordPress中,可以使用flush()方法來實現這一點。下面是一個示例:
<?php
// 引入WordPress的核心文件
require_once( dirname( __FILE__ ) . '/wp-load.php' );
// 更新數據
global $wpdb;
$table_name = $wpdb->prefix . 'my_table'; // 獲取表名
$data = array(
'name' => 'John',
'email' => 'john@example.com'
);
$where = array( 'id' => 1 );
$wpdb->update( $table_name, $data, $where );
// 刷新緩存
$wpdb->flush();
// 查詢數據
$results = $wpdb->get_results( "SELECT * FROM $table_name WHERE id = 1" );
// 輸出查詢結果
if ( $results ) {
$row = $results[0];
echo $row->name . ': ' . $row->email;
} else {
echo 'No results found';
}在這個示例中,我們在更新數據後調用了$wpdb對象的flush()方法,以強制刷新緩存。然後,我們再次執行查詢操作,並輸出查詢結果。現在,您應該能夠看到最新的更新數據了。
請注意,刷新緩存可能會對性能產生一定的影響,因爲它會強制$wpdb對象從數據庫中獲取最新的數據。如果您的查詢操作比較頻繁,並且對性能有較高的要求,建議使用WordPress提供的緩存機制,以減少對數據庫的訪問次數。