【发布时间】:2014-07-07 14:31:32
【问题描述】:
我试图在 Wordpress 上一次更新我的所有帖子,而不是痛苦地在每个页面上进行更新。
我使用 wp_update_post 制作了一个小插件,但它没有识别和更新 Magic Fields postmeta。然后我尝试从 Magic Fields 的 RCCWP_POST 中包含 SaveCustomFields,但是它需要 $_POST 信息才能工作。
我愿意接受任何建议,我尝试了一些 SQL 查询来完成此操作,但均未成功。
看起来像这样:
function activate()
{
$my_posts = get_posts( array('post_type' => 'post', 'numberposts' => -1 ) );
foreach ( $my_posts as $my_post )
{
wp_update_post( $my_post );
RCCWP_Post::SaveCustomFields($my_post->ID);
}
}
【问题讨论】:
-
numberposts 设置为 -1,我很确定它必须是一个正数。
-
实际上 -1 允许您获取每个帖子,而不是设置一个非常高的数字来捕获它们 - cf stackoverflow.com/questions/12010497/…
-
有道理。现在你到底在帖子上修改了什么?在您的代码中,您正在获取帖子并重新保存相同的信息? “在调用 wp_update_post() 之前,有必要创建一个数组来传递必要的元素” 看来您应该发送一个包含您要更新的任何内容的数组。 $my_post = array('ID' => 37, 'post_content' => '这是更新后的内容。')
-
当您在 Magic Fields 插件中创建新的 Field 类别时,这些不会自动添加到旧帖子中 - 至少在我使用的版本中。因此,我只需要在不触及任何内容的情况下更新它,新字段就会出现在数据库中。我刚刚通过一些 SQL 查询解决了我的问题,这是一个相当低效的解决方案,但可以。
-
把你的解决方案作为一个答案,这样如果其他人偶然发现这个问题,他们可以帮助他们。 :-)