用于单一产品缩略图的挂钩

时间:2018-02-15 作者:Akash Agrawal

是否有任何挂钩可以更改单个产品缩略图?我确实在SO上搜索了很多,也在互联网上搜索了很多,但运气不好。

“缩略图”并不是指更改当前图像的大小,而是指根据某些场景,用新图像完全更改/替换产品图像(缩略图)。

public function pn_change_product_image_link( $html, $post_id ){

    $url =  get_post_meta( $post_id );
    $alt = get_post_field( \'post_title\', $post_id ) . \' \' .  __( \'thumbnail\', \'txtdomain\' );
    $attr = array( \'alt\' => $alt );
    $attr = apply_filters( \'wp_get_attachment_image_attributes\', $attr, NULL );
    $attr = array_map( \'esc_attr\', $attr );
    $html = sprintf( \'<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/WP_Suspension_logo.svg/2000px-WP_Suspension_logo.svg.png"\', esc_url($url) );
    foreach ( $attr as $name => $value ) {
        $html .= " $name=" . \'"\' . $value . \'"\';
    }
    $html .= \' />\';
    return $html;
}
这就是我现在正在做的,但这是一个错误。

过滤器,挂钩:

post_thumbnail_html

2 个回复
SO网友:Jordan Carter

以下是我认为是其他答案之一评论的更新版本。此函数替换宽度和高度属性,但OP希望更改src。我想,除了使用preg\\u replace替换src之外,解决方案应该是类似的。

add_action(\'woocommerce_single_product_image_thumbnail_html\',\'remove_single_product_image_attrs\',10,2); 

function remove_single_product_image_attrs( $sprintf, $post_id ){ 
  return preg_replace( \'/(width|height)="\\d*"\\s/\', "", $sprintf ); 
} 

SO网友:Mahesh

我希望这个过滤器能帮助你。

apply_filters( \'woocommerce_single_product_image_thumbnail_html\',  $sprintf,  $post_id ); 
参考号:http://hookr.io/filters/woocommerce_single_product_image_thumbnail_html/

结束