Changeset 3088940
- Timestamp:
- 05/19/2024 10:54:38 AM (23 months ago)
- Location:
- nft-gallery/trunk
- Files:
-
- 2 edited
-
inc/shortcodes.php (modified) (6 diffs)
-
readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
nft-gallery/trunk/inc/shortcodes.php
r3088491 r3088940 6 6 * you will find all functions related to the shortcodes that are available on the plugin. 7 7 * 8 * @author Hendra Setiawan8 * @authors Hendra Setiawan, Nick Weisser 9 9 * @version 1.3.0 10 10 */ … … 22 22 $args = array( 23 23 'headers' => array( 24 'X-API-KEY' => get_option('nftgallery-api'), 25 ), 24 'accept' => 'application/json', 25 'x-api-key' => get_option('nftgallery-api') 26 ) 26 27 ); 27 28 … … 31 32 $style = get_option('nftgallery-style'); 32 33 33 $request = wp_remote_get( 'https://api.opensea.io/api/v1/assets?format=json&limit='.$limit.'&offset=0&order_direction=desc&'.$type.'='.$id,$args ); 34 34 if ($type == 'owner') { 35 $request = wp_remote_get('https://api.opensea.io/api/v2/chain/ethereum/account/'.$id.'/nfts?limit='.$limit, $args); 36 } else { 37 $request = wp_remote_get('https://api.opensea.io/api/v2/collection/'.$id.'/nfts?limit='.$limit, $args); 38 } 39 35 40 ob_start(); 36 41 $nfts = ''; … … 42 47 43 48 $data = json_decode( $body ); 44 45 49 if( ! empty( $data ) ) { 46 50 if($style == 'grid') { 47 51 wp_enqueue_style( 'flexbox' ); 48 52 $nfts .= '<div class="row nftgallery">'; 49 foreach( $data->assets as $asset ) { 50 if($asset->name) { $title = $asset->name; } else { $title = '#'.$asset->token_id; } 53 foreach( $data->nfts as $asset ) { 54 $image_headers = @get_headers($asset->image_url, 1); 55 if ($image_headers === false) { continue; } 56 if (isset($image_headers['Content-Type']) && strpos($image_headers['Content-Type'], 'video') !== false) { 57 continue; // Skip this iteration if the content type is a video 58 } 59 // IPFS images with parentheses wouldn't render ... 60 // Parse URL 61 $parsed_url = parse_url($asset->image_url); 62 if ($parsed_url === false) { 63 echo "<!-- Failed to parse URL: {$asset->image_url} -->\n"; 64 continue; 65 } 66 // Manually encode the path 67 $encoded_path = implode('/', array_map('rawurlencode', explode('/', $parsed_url['path']))); 68 // Rebuild the URL 69 $encoded_image_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . $encoded_path; 51 70 52 $imageURL = $asset->image_preview_url; 53 $parsedUrl = parse_url($imageURL); 54 $scheme = $parsedUrl['scheme']; 55 $host = $parsedUrl['host']; 56 $path = $parsedUrl['path']; 71 // Replace ipfs.io with Cloudflare's IPFS gateway for caching 72 $image_url = str_replace('https://ipfs.io/ipfs/', 'https://cloudflare-ipfs.com/ipfs/', $encoded_image_url); 57 73 58 $clenedImageURL = $scheme . '://' . $host . $path;59 74 if($asset->name) { $title = $asset->name; } else { $title = '#'.$asset->identifier; } 75 60 76 $nfts .= '<div class="col-xs-6 col-sm-6 col-md-6 col-lg-4 nftgallery-wrapper">'; 61 $nfts .= '<div class="nft" data-url="'.$asset-> permalink.'">';62 $nfts .= '<div class="image" style="background-image: url( '.$clenedImageURL.');"></div>';77 $nfts .= '<div class="nft" data-url="'.$asset->opensea_url.'">'; 78 $nfts .= '<div class="image" style="background-image: url(\''.$image_url.'\');"></div>'; 63 79 $nfts .= '<div class="desc"> 64 <div class="collection">'.$asset->collection ->name.'</div>80 <div class="collection">'.$asset->collection.'</div> 65 81 <h2>'.$title.'</h2> 66 82 </div>'; … … 71 87 if($type == 'collection'): 72 88 73 $nfts .= '<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 os-button-wrapper"><a href="https://opensea.io/collection/'.$id.'" class="view-opensea" target="_blank">View '.$asset-> collection->name.' on OpenSea</a></div>';89 $nfts .= '<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 os-button-wrapper"><a href="https://opensea.io/collection/'.$id.'" class="view-opensea" target="_blank">View '.$asset->name.' on OpenSea</a></div>'; 74 90 75 91 endif; … … 87 103 $nfts .= '<div class="gallery-container nftgallery" id="lightgallery">'; 88 104 $no = 1; 89 foreach( $data->assets as $asset ) { 105 foreach( $data->nfts as $asset ) { 106 $image_headers = @get_headers($asset->image_url, 1); 107 if ($image_headers === false) { continue; } 108 if (isset($image_headers['Content-Type']) && strpos($image_headers['Content-Type'], 'video') !== false) { 109 continue; // Skip this iteration if the content type is a video 110 } 90 111 $basename = basename($asset->image_url); 91 if($asset->name) { $title = $asset->name; } else { $title = $asset-> token_id; }112 if($asset->name) { $title = $asset->name; } else { $title = $asset->identifier; } 92 113 $title = strip_tags($title); 93 114 $title = preg_replace('#[^\w()/.%\-&]#'," ",$title); 94 115 95 116 $nfts .= '<a data-src="'.$asset->image_url.'" data-download-url="false" class="gallery-item" data-sub-html=".caption'.$no.'">'; 96 $nfts .= '<img class="img-fluid" src="'.$asset->image_ preview_url.'" />';97 $nfts .= '<div class="caption caption'.$no.'"><p class="nft-title">'.$title.'</p><p> Minted by <strong>'.$asset->creator->user->username.'</strong> in <strong>'.$asset->collection->name.'</strong></p><button class="openseaBtn" data-url="'.$asset->permalink.'">View on OpenSea</button></div>';117 $nfts .= '<img class="img-fluid" src="'.$asset->image_url.'" />'; 118 $nfts .= '<div class="caption caption'.$no.'"><p class="nft-title">'.$title.'</p><p>Collection: '.$asset->collection.'</strong></p><button class="openseaBtn" data-url="'.$asset->opensea_url.'">View on OpenSea</button></div>'; 98 119 $nfts .= '</a>'; 99 120 $no++; -
nft-gallery/trunk/readme.txt
r3087315 r3088940 54 54 55 55 = 1.3.0 = 56 * Added basic support for OpenSea API v2 56 * Adds support for OpenSea API v2 57 * Converts ipfs.io to cloudflare-ipfs.com image URLs for caching 57 58 58 59 = 1.2.0 =
Note: See TracChangeset
for help on using the changeset viewer.