在woocommerce_product_get_image过滤器挂钩中获取产品ID

贾斯汀

我们的某些产品使用的是外部图片而非帖子缩略图,我为此网址设置了acf。看来您可以过滤woocommerceget_image()功能,但是我找不到找到当前产品ID的方法来获取该字段。

这是我到目前为止的内容:

function offsite_product_images($image_url, //variable $this wont work here){
    //need some way to get the current product's id
    if(get_field('thumbnail_url', $id)){
        $image_url = get_field('thumbnail_url', $id);
    }
    return $image_url;
}
add_filter( 'woocommerce_product_get_image', 'offsite_product_images');

woocommerce get_image()函数:

public function get_image( $size = 'woocommerce_thumbnail', $attr = array(), $placeholder = true ) {
    if ( has_post_thumbnail( $this->get_id() ) ) {
        $image = get_the_post_thumbnail( $this->get_id(), $size, $attr );
    } elseif ( ( $parent_id = wp_get_post_parent_id( $this->get_id() ) ) && has_post_thumbnail( $parent_id ) ) {
        $image = get_the_post_thumbnail( $parent_id, $size, $attr );
    } elseif ( $placeholder ) {
        $image = wc_placeholder_img( $size );
    } else {
        $image = '';
    }

    return apply_filters( 'woocommerce_product_get_image', wc_get_relative_url( $image ), $this, $size, $attr, $placeholder, $image );
}

我什至尝试更改函数以直接传递id,但不会这么做。

对于获得产品或其ID传递到我的过滤器的任何帮助,将不胜感激。

LoicTheAztec

您的功能代码不完整,作为WC_Product对象缺少一些参数,您需要获取产品ID。请尝试以下操作:

add_filter( 'woocommerce_product_get_image', 'offsite_product_images', 10, 5 );
function offsite_product_images( $image, $product, $size, $attr, $placeholder ){
    if( get_field('thumbnail_url', $product->get_id() ) ){
        $image = get_field('thumbnail_url', $product->get_id() );
    }
    return $image;
}

代码进入您的活动子主题(或活动主题)的functions.php文件中。它应该工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从WooCommerce的税类过滤器挂钩中排除特定的产品变化

通过“ woocommerce_order_get_formatted_billing_address”过滤器挂钩获取元数据

在自定义的WooCommerce /插件过滤器中获取产品ID

在beforeRemote远程挂钩中添加过滤器

Woocommerce 使用挂钩或过滤器按类别对产品进行排序

如何在RSpec中的before(:suite)/ before(:all)挂钩中访问标签过滤器?

如何检查 WooCommerce 过滤器挂钩参数的值?

WooCommerce、wordpress 搜索、pre_get_posts 过滤器排除摘录和产品描述

如何使用AJAX创建Woocommerce产品过滤器?

WooCommerce 产品描述的 PHP 过滤器

使用颜色和类别的 Woocommerce 过滤器产品?

扩展 WooCommerce 产品过滤器插件短代码

如何从“ woocommerce_cart_item_removed”挂钩中找到产品ID?

获取当前的活动产品过滤器

MySQL获取具有多个过滤器值的产品

使过滤器产品特定

产品过滤器

使用wc_price过滤器挂钩向产品价格添加其他货币

如何在woocommerce_email_headers挂钩中获取订单ID

在woocommerce_admin_billing_fields筛选器挂钩中无法获取订单ID

在woocommerce管理产品列表中为产品标签添加过滤器下拉列表

在Woocommerce中专门更改优惠券验证最低金额过滤器挂钩

woocommerce_loop_add_to_cart_link过滤器挂钩如何深入工作?

Julia Iterator产品和过滤器

WooCommerce以编程方式创建的产品会忽略价格排序过滤器

产品列表上的WooCommerce REST API属性过滤器不起作用

在代码中而不是通过后端呈现 WooCommerce 块“产品过滤器 - 属性”

使用woocommerce挂钩获取最近添加的产品

REST API-通过ID的GET请求过滤器