Agregue el tipo de producto de woocommerce a la matriz de clases de cuerpo

2 minutos de lectura

Estoy tratando de agregar tipos de productos de Woocommerce a la matriz de clases de etiquetas de cuerpo de WordPress que se llama en header.php con

body_class();

Tengo la siguiente función en functions.php pero no agrega la clase. Si elimino el condicional y solo tengo

$classes[] = 'simple-product';

Luego se agrega la clase. Supongo que esto tiene que ver con un problema para obtener valores globales. Llamo a $woocommerce, $post y $product globales porque no estoy seguro de cuál necesito realmente.

//Add Woocommerce body classes
add_filter('body_class','ttm_woocommerce_body_classes');
function ttm_woocommerce_body_classes($classes){
    global $woocommerce, $post, $product;
    if ( $product->product_type == 'simple' ) $classes[] = 'simple-product';
    return $classes;
}

Gracias

Has probado var_dump($product) para ver qué (si algo) existe en ese objeto?

De acuerdo con la códicepuede que tenga que rellenarlo usted mismo usando $post->IDal igual que:

//Add Woocommerce body classes
add_filter('body_class','ttm_woocommerce_body_classes');
function ttm_woocommerce_body_classes($classes){
    global $post;
    $product = get_product( $post->ID );
    if ( $product->product_type == 'simple' ) $classes[] = 'simple-product';
    return $classes;
}

  • ¿Quizás el nombre de la clase puede ser más dinámico? En vez de : if ( $product->product_type == 'simple' ) $classes[] = 'simple-product'; – Bastante: $classes[] = $product->product_type.'-product';?

    – scottdurban

    18 de enero de 2019 a las 8:05


En la página de woocommerce, agregue el nombre del tipo de producto en la etiqueta del cuerpo de su sitio web. Lo primero que necesita para obtener esta página es una página de producto.

Al usar con get_product (), su página está funcionando con la funcionalidad de woocommerce.

Este es un código para agregar todos los nombres de tipo de producto agregados en la etiqueta del cuerpo.

Agregue este código en su carpeta de activación del tema: functions.php

 

add_filter('body_class','obw_woocommerce_body_classes');
function obw_woocommerce_body_classes( $classes ) {
    global $woocommerce, $post, $product;
    $product = get_product( $post->ID );
    $product_type = $product->product_type;
    if ( $product->product_type == 'external' ) $classes[] = 'external-product';
    if ( $product->product_type == 'grouped' ) $classes[] = 'grouped-product';
    if ( $product->product_type == 'simple' ) $classes[] = 'simple-product';
    if ( $product->product_type == 'variable' ) $classes[] = 'variable-product';
    return $classes;
}

¿Ha sido útil esta solución?