我在编写一个简单的函数时遇到了麻烦,该函数可以在某个页面上更新自定义帖子类型中的所有帖子。
这是我的代码(基于this):
add_action(\'save_post\', \'bulk_refresh\');
function bulk_refresh($post_id) {
if($post_id != 123)//123 is the \'certain page\' id
return;
$posts_to_update = new WP_Query(array(\'post_type\' => \'MY_CUSTOM_TYPE\', \'posts_per_page\' => -1));
while($posts_to_update ->have_posts()) : $posts_to_update ->the_post();
$args = array( \'ID\' => $post->ID );
wp_update_post( $args );
endwhile;
// Reset Post Data
wp_reset_postdata();
}
乍一看,一切都必须正常工作,但当我保存id为“123”的页面时,自定义帖子类型中的所有帖子都是重复的。我只想“刷新”它们。
你知道我错在哪里吗?
最合适的回答,由SO网友:NoSense 整理而成
啊,我自己找到了答案。我在循环之前添加了global$post,现在一切似乎都很好。我不知道这是否是一个好的做法,所以如果你有其他想法,请分享:)
以下是修订后的代码:
add_action(\'save_post\', \'bulk_refresh\');
function bulk_refresh($post_id) {
if($post_id != 123)//123 is the \'certain page\' id
return;
global $post;
$posts_to_update = new WP_Query(array(\'post_type\' => \'MY_CUSTOM_TYPE\', \'posts_per_page\' => -1));
while($posts_to_update ->have_posts()) : $posts_to_update ->the_post();
$args = array( \'ID\' => $post->ID );
wp_update_post( $args );
endwhile;
// Reset Post Data
wp_reset_postdata();
}