wordpress 如何将数据复制到自定义数据库表中

8xiog9wr  于 2022-12-03  发布在  WordPress
关注(0)|答案(1)|浏览(118)

我有以下函数,它将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(自定义表)

cld4siwp

cld4siwp1#

这是一个老问题了,但是我想说$wpdb-〉update是多余的。insert将创建行并存储字段。$wpdb-〉insert应该返回“1”-在删除postmeta条目之前检查该值以验证插入是否成功。对update的调用是不必要的。

相关问题