在我的Wordpress网站上,我有大约250个帖子(针对特定的自定义帖子类型)
我创建了一个布尔自定义字段(使用高级自定义字段插件),默认为true;但是,除非我手动打开帖子并点击发布以保存帖子,否则此自定义字段没有任何值。
为250个帖子执行此操作非常耗时。
我是否有可能遍历我的所有自定义帖子并将它们“保存”在function.php文件中(不更改任何内容)?
答案 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 meta和wpdb
请先备份您的数据库