导语:最近要用WooCommerce做一个虚拟卡密的网站,我们希望到达的效果是,用户通过WooCommerce付款成功后,然后自动跳转到取卡密的页面。在WooCommerce中配置虚拟商品没有问题,就是卡在付款跳转到取卡密页面的问题上,下面就说说这个问题的解决方法。
如何跳转虚拟商品取卡密页面上
为了方便调试建议大家先装一个 test gateway for woocommerce 的插件,这个插件可以在WordPress的官网上搜索到,它的作用就是可以通过测试支付网关马上完成付款,不需要每次都用支付宝或贝宝来付款测试。
面临的问题
现在面临的问题是我们可以在产品中设置虚拟产品,虚拟产品设置很简单,勾选虚拟商品选项就可以了,但它没有地方来配置卡密,当我们购买虚拟产品支付完成后,跳转到的页面是WooCommerce的thankyou.php所生成的页面,没有办法获得卡密。
解决方法
所以,现在有两种思路,一种是修改thankyou.php,让它具有从数据库来获取卡密的功能。第二种就是,自己写一个取卡密的页面,然后支付完成后,直接跳转到这个页面。
第一种方法,我们没有试试过,只是设想:)。我们使用了第二种方法,跳转到自己的卡密页面。
至于怎么样来生成卡密,这个问题在这里就不说了,只说说支付完成后怎么跳转。
实现代码
将下面的代码放置在functions.php里就可以实现跳转。
function wcs_redirect_product_based ( $order_id ){ $order = wc_get_order( $order_id ); foreach( $order->get_items() as $item ) { $_product = wc_get_product( $item['product_id'] ); // 添加你自己的虚拟卡密产品的product_id if ( $item['product_id'] == 44 ) { // 将下面的链接改成你自己需要的链接 wp_redirect('https://www.wordpressleaf.com/); } } } add_action( 'woocommerce_thankyou', 'wcs_redirect_product_based' );
这段代码的作用就是当你的虚拟产品支付完成后,会跳转到自己定义的取卡密页面上去。
结束
WooCommerce的资料真的很少,本文参考网址,WooCommerce下单付款后的页面。
博主你好,我现在也正在研究WOOCOMMERCE卡密的情况,你是如何限制每个卡密只能调用一次的呢,能分享研究一下你写的插件吗?付费的,qq1323280084,非常感谢
我是根据订单号来判断的,如果某一个付费了的订单号在卡密表里面有了,就不要再生成卡密了。