存在类似的问题create posts from an API 和programmatically generating posts.
本质上,只需将JSON解析为一个数组,获取所需的字段,然后创建帖子/产品。您很可能也需要提取图像。
您还应该考虑日志是否已经存在于您的数据库中,以及您希望额外元数据如何/在何处存在;价格、库存、年份、工时等。。。
JSON PARSE
$response = \'{"status":"SUCCESS","message":"Results have been extracted","results":[{"post_title":"1984 AQUASPORT 222 FT W96 YAMAHA","post_name":"1984-aquasport-22-2-ft-w96-ya","post_content":"Nice boat 1984 aquasport 22.2 ft c.c 1996 yamaha 200 hp runs good.","post_category":"By Owner","price":"52000","location":"Miami, FL","stock":"952481","year":"2007","images":["http:\\/\\/boatexportusa.com\\/wp-content\\/plugins\\/api\\/get-image.php?src=fakesrc\\/00o0o_7TGyKJXFMp9_600x450.jpg","http:\\/\\/boatexportusa.com\\/wp-content\\/plugins\\/api\\/get-image.php?src=fakesrc\\/00o0o_7TGyKJXFMp9_600x450.jpg"],"cond":"new","size":"27\\\'","make":"SeaRay","model":"S300","hours":"330","propulsion":"Power","addedtime":"2015-03-23"}]}\';
// decode the json
$json = json_decode($response, true);
// loop through the results
if( ! empty($json[ \'results\' ])) {
foreach($json[ \'results\' ] as $data) {
// gather data you need, make sure to sanitize it
$post_data = array(
\'post_title\' => $data[ \'post_title\' ],
\'post_name\' => $data[ \'post_name\' ],
\'post_content\' => $data[ \'post_content\' ],
\'post_date\' => date(\'Y-m-d H:i:s\'),
\'post_status\' => \'publish\',
\'post_author\' => 1,
);
// create product or post and return the new ID
$post_id = wp_insert_post($post_data, $wp_error);
}
}
UPDATE
我建议把这个放进
plugin. 这样你就可以打开或关闭它,并将它与你的主题分开。使用类似
WPPB.me 生成基本插件。
当插件activates, 附表aWP Cron task 要运行daily
.
register_activation_hook(__FILE__, \'my_activation\');
function my_activation() {
wp_schedule_event(time(), \'daily\', \'my_daily_event\');
}
add_action(\'my_daily_event\', \'do_this_daily\');
function do_this_daily() {
// pull api data every day
}
自
WP Cron 是一个伪cron,最好在
shutdown 钩住或避免cron并从管理员处触发它
option page. 无论哪种方式
TechCrunch WP Asynchronous Tasks 可能有助于将处理能力转移到其他任务。
提取新数据后,您需要找出唯一标识产品的方法,这样就不会在数据库中重复它。检查它是否存在,如果存在,则更新它。如果没有,请制作一个新的。
update_post_meta 要设置它,WP_Meta_Query 看看它是否存在。或按标题检查:
if (null == get_page_by_title($title) && empty(get_posts(array(\'name\' => $slug))))
如果有帮助,请
custom post type 捕获产品数据并在
custom page template 使用
custom query.
除了我回答的内容之外,你可以在谷歌上搜索、尝试,当你遇到问题时可以提出新的问题。