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

时间:2015-04-28 18:36:54

标签: wordpress

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

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

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

我是否有可能遍历我的所有自定义帖子并将它们“保存”在function.php文件中(不更改任何内容)?

2 个答案:

答案 0 :(得分:1)

如果你只需要一次这样做,你可以编写一个循环来遍历所有的CPT,然后将其转储到模板文件中,转到使用该模板的页面,然后删除数据一旦发生变化。它通过将此代码添加到我主题的page.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);
    }
?>

完成后请记得删除该代码。

答案 1 :(得分:0)

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

显然只保存一个帖子。

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

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' );

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

详细了解add post metawpdb

请先备份您的数据库