在代码中重新保存 Wordpress 自定义帖子类型



在我的Wordpress网站上,我有大约250个帖子(针对特定的自定义帖子类型)

我创建了一个默认为 true 的布尔自定义字段(使用高级自定义字段插件);但是,除非我手动打开帖子并点击发布以保存帖子,否则此自定义字段没有任何值。

为 250 个帖子执行此操作非常耗时。

是否可以遍历我所有的自定义帖子,然后将它们"保存"在功能.php文件中(无需更改任何内容)?

如果你只需要做一次,你可以编写一个循环来遍历你的所有CPT,然后将其转储到模板文件中,转到使用该模板的页面,并在数据更改后删除数据。它通过将此代码添加到我主题的页面模板文件中来尝试.php。

<?php 
   $args = array(
        'post_type' => 'CUSTOM_POST_TYPE_NAME',
    );
    $posts_array = get_posts($args);
    foreach ($posts_array as $post_val) {
        update_field( 'ACF_FIELD_NAME_HERE', true , $post_val->ID);
    }
?>

请记住在完成后删除该代码。

我认为这是可能的。如果我没记错的话,ACF 将值保存在表中wp_postmeta知道这一点,您可以使用钩子save_post在所有帖子中创建一个循环并保存与每个帖子相关的自定义值。

显然只保存一个帖子。

现在,在函数中使用 save_post 钩子创建一个函数.php

function saveMetabox(){
  global $wpdb;
  //Your query to get all the posts ids from wp_posts...
  $ids = $wpdb->get_results('....');
  //your loop to insert values in wp_postmeta...
  foreach($ids as $id){
    add_post_meta($id->ID, 'ACF_Key', 'The value');
  }
}
add_action( 'save_post', 'saveMetabox' );

保存第一篇文章后,从函数中删除此功能.php

阅读更多添加帖子元和 wpdb

请记住先备份数据库

最新更新