Estoy tratando de cambiar el marcador de posición de imagen predeterminado para productos sin imágenes a imágenes de acuerdo con su categoría de producto.
Estoy usando:
add_filter( 'woocommerce_placeholder_img_src', 'my_custom_woocommerce_placeholder', 10 );
// Function to return new placeholder image URL.
function my_custom_woocommerce_placeholder( $image_url )
{
if ($product_category == 'category1') {
$image_url="http://website.com/imageforCategory.png";
}
elseif ($product_category == 'category2') {
$image_url="http://website.com/imageforCategory.png";
}
else
{
$image_url="http://website.com/defaultImage.png";
}
return $image_url;
}
Estoy atascado en obtener la categoría del producto ($product_category
) detectado en functions.php
archivo de mi tema.
En content-single-product.php
página que estoy definiendo
global $product
y luego simplemente usando
$product->get_categories();
para obtener la categoría de producto.
como lo hago en functions.php
de mi tema?
podrías usar tiene_término() – Comprueba si la publicación actual tiene alguno de los términos dados.
Entonces obtienes:
// Single product page
function filter_woocommerce_placeholder_img_src( $src ) {
// Get the global product object
global $product;
// Is a WC product
if ( is_a( $product, 'WC_Product' ) ) {
// Has term (product category)
if ( has_term( 'categorie-1', 'product_cat', $product->get_id() ) ) {
$src="http://website.com/imageforCategory1.png";
} elseif ( has_term( array('categorie-2', 'categorie-3'), 'product_cat', $product->get_id() ) ) {
$src="http://website.com/imageforCategory2.png";
}
}
return $src;
}
add_filter( 'woocommerce_placeholder_img_src', 'filter_woocommerce_placeholder_img_src', 10, 1 );
// Archive/Shop page
function filter_woocommerce_placeholder_img ( $image_html, $size, $dimensions ) {
$dimensions = wc_get_image_size( $size );
$default_attr = array(
'class' => 'woocommerce-placeholder wp-post-image',
'alt' => __( 'Placeholder', 'woocommerce' ),
);
$attr = wp_parse_args( '', $default_attr );
$image = wc_placeholder_img_src( $size );
$hwstring = image_hwstring( $dimensions['width'], $dimensions['height'] );
$attributes = array();
foreach ( $attr as $name => $value ) {
$attribute[] = esc_attr( $name ) . '="' . esc_attr( $value ) . '"';
}
$image_html="<img src="" . esc_url( $image ) . '" ' . $hwstring . implode( ' ', $attribute ) . '/>';
return $image_html;
}
add_filter( 'woocommerce_placeholder_img', 'filter_woocommerce_placeholder_img', 10, 3 );
Nota: la woocommerce_placeholder_img
gancho, utilizado en las devoluciones de la página de archivo/tienda $image_html
. Esa cadena se puede adaptar a sus necesidades. Tales como image src, class, alt, size, etc.