如何获取WooCommerce商品缩略图URL?代码问题求助
问题排查与修正
你的代码里获取商品缩略图URL的写法存在两个核心问题:
$product->get_image()方法的作用是生成完整的HTML img标签,并非返回纯图片URL,直接把它赋值给image字段会导致API收到的是HTML代码而非有效URL。- 传入
get_image()的参数写法错误,且get_the_post_thumbnail_url()依赖全局post对象,不如直接用WooCommerce产品自身的图片方法可靠。
正确实现方式
WooCommerce提供了专门的方法获取产品图片ID,结合WordPress的附件URL方法即可拿到纯图片URL:
步骤1:获取产品缩略图URL
用$product->get_image_id()拿到产品主图的附件ID,再通过wp_get_attachment_image_url()获取指定尺寸的URL(支持的尺寸包括thumbnail、woocommerce_thumbnail、woocommerce_single、full等)。
步骤2:修正后的完整代码
$product = wc_get_product( $post->ID ); $end_point = 'https://api.webpushr.com/v1/notification/send/sid'; // 获取产品缩略图URL,指定woocommerce默认缩略图尺寸 $image_id = $product->get_image_id(); $image_url = $image_id ? wp_get_attachment_image_url( $image_id, 'woocommerce_thumbnail' ) : ''; $body = array( 'title' => $product->get_name(), 'message' => 'check out now', 'target_url' => $product->get_permalink(), 'image' => $image_url, // 这里填入纯图片URL 'sid' => '113858026', );
可选:兼容无产品图片的情况
如果部分商品未设置主图,可以添加默认图片兜底:
$image_url = ''; if ( $product->get_image_id() ) { $image_url = wp_get_attachment_image_url( $product->get_image_id(), 'woocommerce_thumbnail' ); } else { // 替换成你的默认图片URL $image_url = 'https://your-domain.com/default-product-thumb.jpg'; }
内容的提问来源于stack exchange,提问作者Safayet hossain
相关产品推荐
相关产品推荐

