我有以下函数,它将postmeta表中的数据插入到一个定制的数据库表wp_fixture_results中。
我使用的是WPAll导入插件操作pmxi_saved_post
。因此,代码在导入过程中运行。
该代码的目的是将数据从wp_postmeta迁移到自定义表wp_fixtures_results
中。
当运行新导入的代码时,通常存储在wp_postmeta中的数据被移动到自定义表中。
但是,数据只在INSERT查询中运行,如代码所示。使用相同的插件操作,我需要将postmeta中的数据更新到自定义表中。问题是代码只对INSERT查询有效。如何检查postmeta中的数据是否已更改,以及在更新数据的导入过程中,是否也更新了自定义表?
if ($post_type === 'fixture-result') {
function save_fr_data_to_custom_database_table($post_id)
{
// Make wpdb object available.
global $wpdb;
// Retrieve value to save.
$value = get_post_meta($post_id, 'fixtures_results', true);
// Define target database table.
$table_name = $wpdb->prefix . "fixtures_results";
// Insert value into database table.
$wpdb->insert($table_name, array('ID' => $post_id, 'fixtures_results' => $value), array('%d', '%s'));
// Update query not working - doesn't change data.
$wpdb->update($table_name, array('ID' => $post_id, 'fixtures_results' => $value), array('%d', '%s'));
// Delete temporary custom field.
delete_post_meta($post_id, 'fixtures_results');
}
add_action('pmxi_saved_post', 'save_fr_data_to_custom_database_table', 10, 1);
}
wp_postmeta数据表
wp_fixture_results(自定义表)
1条答案
按热度按时间cld4siwp1#
这是一个老问题了,但是我想说$wpdb-〉update是多余的。insert将创建行并存储字段。$wpdb-〉insert应该返回“1”-在删除postmeta条目之前检查该值以验证插入是否成功。对update的调用是不必要的。