Support

Account

Forum Replies Created

  • Well that colon is 100% a colon or a { depending on your syntax.

    the endwhile error most likely refers to you missing an end tag somewhere… Can you provide your template file and functions file?

  • @wpdragon, what is or isn’t happening? are you able to get the URL to show at all?

    Is you oEmbed field within the repeater? or a field of its own?

    Are you getting any errors?

  • @WPDragon i should have mentioned i just made up the markup without testing or looking at lightbox documentation — also if your using a repeater try this for testing:

    					
    <?php //For Use with Repeater Field 
    $videos = get_field('video');
    $videos_raw = get_field('video', FALSE, FALSE);
    									
    								
    //Add the Thubmnail to the $videos object
    									
    									foreach($videos_raw as $key => $video_raw) : 
    								
    											$videos[$key]['video_thumb'] = get_video_thumbnail_uri($video_raw['field_5449746362c3d']); 
    //Replace 'field_5449746362c3d' with your field's Field key (obtainable by going to screen options in the fields admin, and setting 'Show Field Key' to 'Yes')
    								
    endforeach;
    									
    								
    								
    //Loop through the $videos object
    									foreach($videos as $video): ?>
    									
    VIDEO THUMB URL: <?php echo $video['video_thumb']; ?>
    										
    							
    										
    										VIDEO EMBED: <?php echo $video['video_url'] ?>
    																		
    <? endforeach; ?>
  • My solution is a bit more comprehensive than that of @scheurta, as it covers multiple video sources. Youtube, Vimeo, and Wistia.

    First off in functions.php:

    	function get_video_thumbnail_uri( $video_uri ) {
    	
    		$thumbnail_uri = '';
    		
    	
    		
    		// determine the type of video and the video id
    		$video = parse_video_uri( $video_uri );
    		
    		
    		
    		// get youtube thumbnail
    		if ( $video['type'] == 'youtube' )
    			$thumbnail_uri = 'http://img.youtube.com/vi/' . $video['id'] . '/hqdefault.jpg';
    		
    		// get vimeo thumbnail
    		if( $video['type'] == 'vimeo' )
    			$thumbnail_uri = get_vimeo_thumbnail_uri( $video['id'] );
    		// get wistia thumbnail
    		if( $video['type'] == 'wistia' )
    			$thumbnail_uri = get_wistia_thumbnail_uri( $video_uri );
    		// get default/placeholder thumbnail
    		if( empty( $thumbnail_uri ) || is_wp_error( $thumbnail_uri ) )
    			$thumbnail_uri = ''; 
    		
    		//return thumbnail uri
    		return $thumbnail_uri;
    		
    	}
    	
    	
    	/**
    	 * Parse the video uri/url to determine the video type/source and the video id
    	 */
    	function parse_video_uri( $url ) {
    		
    		// Parse the url 
    		$parse = parse_url( $url );
    		
    		// Set blank variables
    		$video_type = '';
    		$video_id = '';
    		
    		// Url is http://youtu.be/xxxx
    		if ( $parse['host'] == 'youtu.be' ) {
    		
    			$video_type = 'youtube';
    			
    			$video_id = ltrim( $parse['path'],'/' );	
    			
    		}
    		
    		// Url is http://www.youtube.com/watch?v=xxxx 
    		// or http://www.youtube.com/watch?feature=player_embedded&v=xxx
    		// or http://www.youtube.com/embed/xxxx
    		if ( ( $parse['host'] == 'youtube.com' ) || ( $parse['host'] == 'www.youtube.com' ) ) {
    		
    			$video_type = 'youtube';
    			
    			parse_str( $parse['query'] );
    			
    			$video_id = $v;	
    			
    			if ( !empty( $feature ) )
    				$video_id = end( explode( 'v=', $parse['query'] ) );
    				
    			if ( strpos( $parse['path'], 'embed' ) == 1 )
    				$video_id = end( explode( '/', $parse['path'] ) );
    			
    		}
    		
    		// Url is http://www.vimeo.com
    		if ( ( $parse['host'] == 'vimeo.com' ) || ( $parse['host'] == 'www.vimeo.com' ) ) {
    		
    			$video_type = 'vimeo';
    			
    			$video_id = ltrim( $parse['path'],'/' );	
    						
    		}
    		$host_names = explode(".", $parse['host'] );
    		$rebuild = ( ! empty( $host_names[1] ) ? $host_names[1] : '') . '.' . ( ! empty($host_names[2] ) ? $host_names[2] : '');
    		// Url is an oembed url wistia.com
    		if ( ( $rebuild == 'wistia.com' ) || ( $rebuild == 'wi.st.com' ) ) {
    		
    			$video_type = 'wistia';
    				
    			if ( strpos( $parse['path'], 'medias' ) == 1 )
    					$video_id = end( explode( '/', $parse['path'] ) );
    		
    		}
    		
    		// If recognised type return video array
    		if ( !empty( $video_type ) ) {
    		
    			$video_array = array(
    				'type' => $video_type,
    				'id' => $video_id
    			);
    		
    			return $video_array;
    			
    		} else {
    		
    			return false;
    			
    		}
    		
    	}
    	
    	
    	 /* Takes a Vimeo video/clip ID and calls the Vimeo API v2 to get the large thumbnail URL.
    	 */
    	function get_vimeo_thumbnail_uri( $clip_id ) {
    		$vimeo_api_uri = 'http://vimeo.com/api/v2/video/' . $clip_id . '.php';
    		$vimeo_response = wp_remote_get( $vimeo_api_uri );
    		if( is_wp_error( $vimeo_response ) ) {
    			return $vimeo_response;
    		} else {
    			$vimeo_response = unserialize( $vimeo_response['body'] );
    			return $vimeo_response[0]['thumbnail_large'];
    		}
    		
    	}
    	/**
    	 * Takes a wistia oembed url and gets the video thumbnail url.
    	 */
    	function get_wistia_thumbnail_uri( $video_uri ) {
    		if ( empty($video_uri) )
    			return false;
    		$wistia_api_uri = 'http://fast.wistia.com/oembed?url=' . $video_uri;
    		$wistia_response = wp_remote_get( $wistia_api_uri );
    		if( is_wp_error( $wistia_response ) ) {
    			return $wistia_response;
    		} else {
    			$wistia_response = json_decode( $wistia_response['body'], true );
    			return $wistia_response['thumbnail_url'];
    		}
    		
    	}
    	

    And then in your template file choose one:

    For Single Field:

    <?php
    										//For use with a single field.
    										
    									 $video = get_field('video'); //Embed Code
    									  $video_url = get_field('video', FALSE, FALSE); //URL
    									  
    									  
    									  $video_thumb_url = get_video_thumbnail_uri($video_url); //get THumbnail via our functions in functions.php ?>
    									  
    									  
    									  <?php //Lightbox Link via Thumbnail ?>
    										<a href="#lightbox"><img src="<?php echo $video_thumb_url; ?>"/></a>
    										
    										<?php //Lightbox Element with Video Embed Code ?>
    										<div id="lightbox" class="embed-container">
    										<?php echo $video; ?>
    										</div>
    										
    										

    For Repeater Field:

    							
    									
    							<?php
    								//For Use with Repeater Field 
    								 $videos = get_field('videos');
    								 $videos_raw = get_field('videos', FALSE, FALSE);
    									
    								
    								//Add the Thubmnail to the $videos object
    									
    									foreach($videos_raw as $key => $video_raw) : 
    								
    											$videos[$key]['video_thumb'] = get_video_thumbnail_uri($video_raw['field_5449746362c3d']); //Replace 'field_5449746362c3d' with your field's Field key (obtainable by going to screen options in the fields admin, and setting 'Show Field Key' to 'Yes')
    								
    									endforeach;
    									
    								
    								
    								//Loop through the $videos object
    									foreach($videos as $video): ?>
    									
    										<?php //Lightbox Link via Thumbnail ?>
    										<a href="#lightbox"><img src="<?php echo $video['video_thumb']; ?>"/></a>
    										
    										<?php //Lightbox Element with Video Embed Code ?>
    										<div id="lightbox" class="embed-container">
    										<?php echo $video['video'] ?>
    										</div>
    									
    									<? endforeach; ?>
  • Writing from my phone, but I got this going, using this as a reference to write my own function:

    https://github.com/FindingSimple/acf-field-video/blob/master/video.php

    in conjunction with this:

    http://support.advancedcustomfields.com/forums/topic/getting-just-the-url-that-was-entered-into-an-oembed-field-inside-a-variable/

    Ill try to post more of what i ended up with tomorrow.

  • +1 trying to do exactly this.

    Have you had any luck yet?

Viewing 6 posts - 1 through 6 (of 6 total)