58 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| function fwembed_parse_html($url = null) {
 | |
|   if ($url === null) {
 | |
|     throw new ValueError("Missing URL");
 | |
|   }
 | |
|   $html = null;
 | |
|   $dom = new DOMDocument();
 | |
|   @$dom->loadHTML(file_get_contents($url));
 | |
|   $dom->documentURI = $url;
 | |
|   $divs = $dom->getElementsByTagName('div');
 | |
|   foreach ($divs as $div) {
 | |
|     if ($div->hasAttribute('data-testid') && $div->getAttribute('data-testid') === 'product') {
 | |
|       $xpath = new DOMXPath($dom);
 | |
|       
 | |
|       $tileItem = $xpath->query('.//img[contains(@class, "tile__item--1") 
 | |
|                                 and not(contains(@class, "badge")) 
 | |
|                                 and not(contains(@class, "tile_options"))
 | |
|                                 and not(contains(@class, "tile__item--2"))]', $div);
 | |
|       $tileDesc = $xpath->query('.//*[contains(@class, "tile__description") 
 | |
|                                 and not(contains(@class, "badge")) 
 | |
|                                 and not(contains(@class, "tile_options"))]', $div);
 | |
|       $tileHeading = $xpath->query('.//*[contains(@class, "tile__heading") 
 | |
|                                    and not(contains(@class, "badge")) 
 | |
|                                    and not(contains(@class, "tile_options"))]', $div);
 | |
|       $tilePrices = $xpath->query('.//*[contains(@class, "tile__prices") 
 | |
|                                   and not(contains(@class, "badge")) 
 | |
|                                   and not(contains(@class, "tile_options"))]', $div);
 | |
|       $productHTML = '';
 | |
|       if ($tileItem->length > 0) {
 | |
|         $productHTML .= $dom->saveHTML($tileItem->item(0));
 | |
|       }
 | |
|       if ($tileDesc->length > 0) {
 | |
|         $productHTML .= $dom->saveHTML($tileDesc->item(0));
 | |
|       }
 | |
|       if ($tileHeading->length > 0) {
 | |
|         $productHTML .= $dom->saveHTML($tileHeading->item(0));
 | |
|       }
 | |
|       if ($tilePrices->length > 0) {
 | |
|         $productHTML .= $dom->saveHTML($tilePrices->item(0));
 | |
|       }
 | |
| 
 | |
|       $html = $html . '<div class="product-tile">' . $productHTML . '</div>';
 | |
|     }
 | |
|   }
 | |
|   $html = str_replace('a href="', 'a target="_blank" href="' . $url, $html);
 | |
|   return $html;
 | |
| }
 | |
| 
 | |
| function fwembed_shortcode( $atts ) {
 | |
|   $options = get_option( 'fourthwall_settings_name' );
 | |
|   $value = isset( $options['fourth_url'] ) ? $options['fourth_url'] : 'https://latinosagainstspookyshit-shop.fourthwall.com';
 | |
|   $store_html = fwembed_parse_html($value);
 | |
|   $store_render = '<div class="fw-store-parent">' . PHP_EOL . $store_html . PHP_EOL . '</div>';
 | |
|   return $store_render;
 | |
| }
 | |
| add_shortcode( 'fourthwall', 'fwembed_shortcode' );
 |