WordPress/WooCommerce如何从其他插件触发Facebook商品同步
手动触发Facebook for WooCommerce商品同步方案
不要在前端AJAX的success回调里直接写同步逻辑,同步操作必须放在后端执行,避免出现前端权限校验漏洞,具体实现步骤如下:
- 找到后端处理
updatenotasexterpronedu这个AJAX动作的PHP代码段,定位到商品价格、备注更新完成的位置 - 在更新逻辑执行完成后,插入同步触发代码,直接调用插件内置的同步方法即可,优先使用新版本兼容写法:
// 校验插件是否正常加载 if ( class_exists( 'WooCommerce\Facebook\Products' ) ) { // 传入当前更新的商品ID,触发单商品即时同步 \WooCommerce\Facebook\Products::sync_product( $product_id ); }
- 如果你使用的是2.0以下的旧版本插件,替换成旧版兼容写法:
if ( function_exists( 'facebook_for_woocommerce' ) ) { $fb_integration = facebook_for_woocommerce()->get_integration(); $fb_integration->do_product_sync( $product_id ); }
- 如果不想判断插件版本,可以直接触发WooCommerce原生商品保存钩子,插件会自动捕获并将商品加入同步队列,兼容性最好:
do_action( 'woocommerce_after_product_object_save', wc_get_product( $product_id ) );
注意:如果你在插件设置里开启了异步同步队列,商品更新后同步到Facebook端可能有1-5秒的延迟,属于正常运行逻辑,不会出现数据遗漏。
前端的AJAX代码不需要额外添加同步相关逻辑,只要后端同步代码嵌入到AJAX处理流程中,前端收到Okeytodo响应时,同步指令已经下发完成,保留原有提示逻辑即可。
内容的提问来源于stack exchange,提问作者Club
相关产品推荐
相关产品推荐

