在WooCommerce中集成产品Feed API

时间:2015-12-29 作者:Raja Gopal

我想集成一个API,用于从第三方自动导入产品。

我有这个API。API文档说明如下:。,

我们每24小时更新一次库存!

API请求必须采用以下格式:**

http://boatexportusa.com/wp-content/plugins/api/api.php?apikey=myAPIkeyHere

API响应是一个JSON字符串,包含所有列表(>55.000)

您可以在测试时将可选变量debug设置为1,这将强制来自API的响应仅包含50个列表,并且您每天有无限的请求。

唯一可用的请求方法是GET

Example: API Request (with CURL)

$ch = curl_init(\'http://boatexportusa.com/wp-content/plugins/api/api.php?apikey=myAPIkeyHere\')
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

Example: API Response (JSON)

{
    "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"
                }]
}
我被困在如何继续的问题上

如何将此API与Wocommerce产品集成以自动同步

UPDATE :

图像未存储,我使用以下代码

\'post_images\' => $data[ \'images\' ],

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

存在类似的问题create posts from an APIprogrammatically 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.

除了我回答的内容之外,你可以在谷歌上搜索、尝试,当你遇到问题时可以提出新的问题。

相关推荐

创建帖子,包含来自远程API的数据

我需要一些帮助和指导。因此,我正在开发一个网站(自定义主题),目标是从远程API获取数据。我希望能够将数据存储在各个帖子中(一种自定义帖子类型),当有人向远程API添加或删除数据时,它应该会更新网站上的帖子。我使用的API的结构如下:https://pippinsplugins.com/edd-api/products我知道如何从中获取数据并解码JSON等。$url = \'https://pippinsplugins.com/edd-api/products\'; $username