为每个用户插入新帖子无限循环错误

时间:2012-11-14 作者:She Hulk

我编写这个小函数是为了自动为博客的每个用户创建一个帖子,但它会创建一个无限循环(我禁用它是为了阻止它创建新帖子)。我对php不是很熟练,我想错误在于在foreach中使用wp\\u insert\\u post,但简单地把它放在大括号外是行不通的。如何使此函数仅为每个作者插入一篇文章?谢谢

$blogusers = get_users();
foreach ($blogusers as $user) {
    $my_post = array(
    \'post_title\'    => $user->display_name,
    \'post_content\'  => \'Bla bla bla.\',
    \'post_status\'   => \'publish\',
    \'post_author\'   => $user->ID,
    \'post_type\'     => \'custom\'
    );

    wp_insert_post( $my_post );
}

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

该功能位于functions.php 它将在每次页面加载时运行,并且每次运行时都会为数据库中的每个用户插入一篇文章。这不是一个无限循环。你只是一直在运行它。

您需要运行一次,而且只需运行一次,就可以用现有用户的帖子填充数据库。如果你的博客流量很低,你可以粘贴它,加载页面,然后立即删除它。如果你有很多流量,你将需要一个不同的策略。

如果要为新用户插入帖子,需要在用户注册系统中挂接类似的功能。类似于。。。

function create_user_post($user_id) {
    $user = get_userdata($user_id);
    $my_post = array(
    \'post_title\'    => $user->display_name,
    \'post_content\'  => \'Bla bla bla.\',
    \'post_status\'   => \'publish\',
    \'post_author\'   => $user->ID,
    \'post_type\'     => \'custom\'
    );

    wp_insert_post( $my_post );
}
add_action(\'user_register\',\'create_user_post\');
我只是在脑子里想出来的,但我想这会有用的。您的操作非常复杂,可能需要一些实现,然后再进行调试。:)

供参考:get_userdata, user_register

结束