Tengo una función que reemplaza el botón Agregar al carrito y agrega contenido específico en productos descargables. Hay dos tipos de productos descargables; ‘Muestras Gratis’ y ‘Recetas de Actividad’. Estas palabras clave se agregan como etiquetas de productos y se utilizan para determinar cuál es qué al consultar el producto descargable. Lo que suena bastante simple, pero mi problema es que cuando agrega más de una etiqueta a un producto descargable, mi código a continuación no detecta la etiqueta que necesito y luego muestra el código relevante.
Al imprimir el valor de la variable $product_tag = nullasí que esto me dice que algo anda mal con $product_tag = get_term($tag)->name;pero no puedo entender qué debe ser o incluso si ese es el problema.
Entonces, mi pregunta es cómo muestro contenido específico en productos descargables dependiendo de si tiene una etiqueta específica en su conjunto de etiquetas.
global $product;
if ( $product->is_downloadable('yes') ) {
if ( $product->get_price() > 0 ) {
do_action( 'woocommerce_' . $product->get_type() . '_add_to_cart' );
} else {
$downloads = $product->get_downloads();
$tags = $product->tag_ids;
foreach($tags as $tag) {
$product_tag = get_term($tag)->name;
}
foreach( $downloads as $key => $download ) {
if ($product_tag == 'Activity Recipes') {
echo '
<h4>Step 1</h4>
<a href="' . esc_url( $download['file'] ) . '" target="blank" class="btn btn-secondary ">Download FREE template</a>
<hr />
<h4>Step 2 (Optional)</h4>
<p>Choose your products below as needed to help bring the activity to life:</p>
<a class="btn btn-secondary" href="#details">Choose products</a>
';
} else if ($product_tag == 'Free Samples') {
echo '<p class="download-link"><a href="' . esc_url( $download['file'] ) . '" target="blank" class="btn btn-secondary ">Download FREE ' . $download['name'] . '</a></p>';
}
}
}
} else {
do_action( 'woocommerce_' . $product->get_type() . '_add_to_cart' );
}
.