updat_field 不适用于高级自定义字段的后置对象
updat_field not working for advanced custom field 's postobject
我有 post 对象,需要根据我使用 update_field 的文本进行设置或更新,但 它不会更新 post
中 post 对象的选定值
<?php
$allposts= get_posts(array('post_type' => 'genres', 'numberposts' => -1));
$newgenre="MYSTERY";
foreach ( $allposts as $post ) : setup_postdata($post);
if (!empty($post))
{
update_field('genrelist',$newgenre,$post->ID);
}
endforeach;
?>
您写出的内容,尽管性能不如您希望的那样,应该 基于 the update_field()
documentation 工作。您可以考虑尝试以下方法:
- 验证 'genrelist' 是自定义字段使用的元键
- 尝试将 'genrelist' 换成字段键(请参阅“[查找字段键](http://www.advancedcustomfields.com/resources/update_field/#finding-the 字段键)以获取有关如何显示此信息的说明)以确保它不是参考查找问题。
- 您对
get_posts
的调用将 post 类型设置为 'genres',但这似乎更像是一种分类法,而不是自定义 post 类型。您可能想要验证 $allposts
没有给您一个空数组(这意味着 foreach
循环与 update_field()
调用永远不会执行)。
不管它值多少钱,因为您没有在您提供的代码中使用像 get_the_ID()
这样的函数,所以您不必担心 setup_postdata()
。 empty()
的检查似乎也没有必要,因为 get_posts()
不应该返回空的 post。重写,示例代码更像这样:
$allposts = get_posts( array( 'post_type' => 'genres', 'posts_per_page' => 100 ) );
$newgenre = 'MYSTERY';
foreach ( $allposts as $single_post ) {
update_field( 'genrelist', $newgenre, $post->ID );
}
FWIW,如果您的站点有很多 post,将 numberposts/posts_per_page
设置为“-1”可能会是一个巨大的性能问题。最好设置一个合理的上限(在重写的代码中,我使用了 100,但你的上限可能会有所不同)。如需更多信息,10up has open sourced their best practices for WordPress development(完全披露:我为 10up 工作)。
我有 post 对象,需要根据我使用 update_field 的文本进行设置或更新,但 它不会更新 post
中 post 对象的选定值<?php
$allposts= get_posts(array('post_type' => 'genres', 'numberposts' => -1));
$newgenre="MYSTERY";
foreach ( $allposts as $post ) : setup_postdata($post);
if (!empty($post))
{
update_field('genrelist',$newgenre,$post->ID);
}
endforeach;
?>
您写出的内容,尽管性能不如您希望的那样,应该 基于 the update_field()
documentation 工作。您可以考虑尝试以下方法:
- 验证 'genrelist' 是自定义字段使用的元键
- 尝试将 'genrelist' 换成字段键(请参阅“[查找字段键](http://www.advancedcustomfields.com/resources/update_field/#finding-the 字段键)以获取有关如何显示此信息的说明)以确保它不是参考查找问题。
- 您对
get_posts
的调用将 post 类型设置为 'genres',但这似乎更像是一种分类法,而不是自定义 post 类型。您可能想要验证$allposts
没有给您一个空数组(这意味着foreach
循环与update_field()
调用永远不会执行)。
不管它值多少钱,因为您没有在您提供的代码中使用像 get_the_ID()
这样的函数,所以您不必担心 setup_postdata()
。 empty()
的检查似乎也没有必要,因为 get_posts()
不应该返回空的 post。重写,示例代码更像这样:
$allposts = get_posts( array( 'post_type' => 'genres', 'posts_per_page' => 100 ) );
$newgenre = 'MYSTERY';
foreach ( $allposts as $single_post ) {
update_field( 'genrelist', $newgenre, $post->ID );
}
FWIW,如果您的站点有很多 post,将 numberposts/posts_per_page
设置为“-1”可能会是一个巨大的性能问题。最好设置一个合理的上限(在重写的代码中,我使用了 100,但你的上限可能会有所不同)。如需更多信息,10up has open sourced their best practices for WordPress development(完全披露:我为 10up 工作)。