Estoy tratando de hacer eco del texto con las etiquetas especiales "h5", así que agregué este código dentro de function.php para hacer eco de la breve descripción debajo de cada producto.
add_action( 'woocommerce_after_shop_loop_item', 'woo_show_excerpt_shop_page', 5 ); function woo_show_excerpt_shop_page() { global $product; echo $product->post->post_excerpt; }
Funciona pero hace eco de todo el texto.
Así que edité el código para recoger solo etiquetas h5
add_action( 'woocommerce_after_shop_loop_item', 'woo_show_excerpt_shop_page', 5 ); function woo_show_excerpt_shop_page() { global $product; //pick up only h5 $html = '<h5></h5>'; $dom = new DOMDocument(); $dom->loadHTML( $html ); echo $dom->getElementsByTagName("h5")->item(0)->textContent; }
¡Ahora mi problema es que el texto no aparece en absoluto! ¿Qué estoy haciendo mal?
Recuerda que las computadoras son estúpidas, no saben lo que quieres decir , solo lo que dices . Así que en este código:
$html = '<h5></h5>'; $dom = new DOMDocument(); $dom->loadHTML( $html ); echo $dom->getElementsByTagName("h5")->item(0)->textContent;
La computadora cargará la cadena '<h5></h5>'
, la analizará como HTML y luego extraerá los elementos h5
de ella. En ningún momento mirará ningún otro texto.
Lo que desea hacer es buscar elementos h5
dentro de otra cadena , por lo que debe decirle a la computadora qué otra cadena. Según su primer intento, la cadena que desea buscar es $product->post->post_excerpt
, por lo que ese es el valor que necesita en $html
:
global $product; $html = $product->post->post_excerpt; $dom = new DOMDocument(); $dom->loadHTML( $html ); echo $dom->getElementsByTagName("h5")->item(0)->textContent;