WP_POST_UPDATE上的帖子重复

时间:2014-02-22 作者:NoSense

我在编写一个简单的函数时遇到了麻烦,该函数可以在某个页面上更新自定义帖子类型中的所有帖子。

这是我的代码(基于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”的页面时,自定义帖子类型中的所有帖子都是重复的。我只想“刷新”它们。

你知道我错在哪里吗?

1 个回复
最合适的回答,由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();
}

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴