在没有更改的情况下手动“更新”帖子后,数据库状态会发生什么变化?

时间:2021-09-02 作者:Nathan

导入一系列帖子(使用WP All Import)后,我的(自定义)页面模板无法访问帖子的内容/字段。但是,如果我在编辑器中打开帖子并单击;更新(&Q);without making any changes, 页面模板突然工作正常。这使我假设插入了一些以前不重要、以前为空的数据库字段。

尽管如此;“错误”;可能是由于高级自定义字段插件或WP All Import插件的细微差别,我的测试仍然表明,在单击更新按钮后,数据库状态发生了一些非常小的变化(即使没有进行任何更改)。

编辑:仅供参考导入帖子后,我尝试停用所有插件,问题仍然存在

Edit #2: After more testing, it seems that WordPress generates _fields after manual "updates" but not during the import process. Example, importing data into field full_address WordPress will create a _full_address only after a manual update. I\'m doing more testing now, but this might be the problem.

1 个回复
SO网友:Nathan

回答我自己的问题,WordPress在发布一篇帖子后似乎没有对数据库进行任何更改;更新(&Q);未包含任何更改。发生的任何更改都应该是主题或插件的结果。

然而,高级自定义字段(ACF)插件确实如此。明确地if 设置ACF字段(例如通过WP All导入)without 同时设置ACF field key reverence,点击;更新(&Q);按钮将添加这些字段键引用。

当我尝试将字段键引用添加到导入时,仍然存在问题。因此,我发现最简单的解决方案(而不是在数百篇帖子上单击“更新”)是运行以下程序:

function bulk_update_posts() {

    $args = array(  \'post_type\'=>\'post\', // Change \'post\' if you\'re using pages or a CPT
                    \'posts_per_page\'   => -1,
                    \'post_status\' => array(\'publish\', \'future\') // Includes published AND scheduled posts
    );

    $all_posts = get_posts($args);

    foreach($all_posts as $key => $one_post){
        $meta_values = get_post_meta( $one_post->ID);
        foreach($meta_values as $meta_key => $meta_value ){
            update_field($meta_key, $meta_value[0], $one_post->ID);
        }
    }
}
add_action( \'init\', \'bulk_update_posts\' );
//add_action( \'wp_loaded\', \'mass_update_posts\' );

相关推荐

拥有2个MySQL用户安全吗?

我们有一个WooCommerce网站,它只有一个数据库。在wp配置中。php I设置与数据库的连接:user1 name_of_db psw_for_db_user 我们在办公室安装了一个ERP软件,我们购买了一个软件,可以在ERP和WooCommerce之间同步一些数据(订单、价格、库存…)。该软件(位于ERP和WC之间)需要直接连接到WordPress的数据库。我可以创建一个新的用户和密码来从该软件连接到数据库吗?它安全吗?或者我们将遇到WordPress/WooCommer