Wordpress:在多个安装中使用CronJob中的wp_insert_post()

时间:2014-09-19 21:32:53

标签: php wordpress cron multiple-databases

我尝试通过cron job插入程序化的wordpress帖子。

我已经设置了很多数据库连接

$DB = array(
'naruto' => new wpdb('ultimate_naruto','','ultimate_naruto','localhost'),
'4k' => new wpdb('ultimate_4k','','ultimate_4k','localhost'),
'weihnachten' => new wpdb('ultimate_xmas','','ultimate_xmas','localhost'),
'halloween' => new wpdb('ultimate_hallow','','ultimate_hallow','localhost'),
'disney' => new wpdb('ultimate_disney','','ultimate_disney','localhost'),
'starwars' => new wpdb('ultimate_starwar','','ultimate_starwars','localhost'),
'fossil' => new wpdb('ultimate_fossil','','ultimate_fossil','localhost'),
'avocado' => new wpdb('ultimate_avocado','','ultimate_avocado','localhost'),
'3d-drucker' => new wpdb('ultimate_3d','','ultimate_3d','localhost'),
'lego' => new wpdb('ultimate_lego','','ultimate_lego','localhost'),
'barbie' => new wpdb('ultimate_barbie','','ultimate_barbie','localhost')

);

并希望在一些DataOperations插入到相应的数据库后插入,我想我有连接设置rigth但因为wp_insert_post不是类wpdb / global $ wpdb的一部分它不起作用...我找不到一种选择正确数据库以正确执行wp_insert_post的方法。

foreach($arr_keywords as $portal => $keywords){
    foreach($keywords as $keyword){
        if(stripos($_title,$keyword) !== false){
            $row = $DB[$portal]->get_results("SELECT COUNT(*) FROM wp_posts WHERE id='$id'");
            if($row == 0){
                $data = prepare_data($id,$arr_portal[$portal]);
                //do something to select correct db here
                wp_insert_post($data);
            }
        }
    }
}

任何人都可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:1)

我会探索使用wp-cli(wordpress的命令行脚本)。

每个数据库都有一个yaml文件,其中包含自己的db用户和密码,而不是$ DB数组。

然后编写一个bash脚本(或者你正在使用的任何shell)循环遍历每个配置,切换到该目录,并运行wp post create命令(命令行相当于wp_insert_post,使用相同的参数)。