Support » Plugin: Pinterest Pin It Button For Images » Display the title of the image

Viewing 11 replies - 1 through 11 (of 11 total)
  • Instead of : $post_title = get_the_title($ID);

    I do :

    $postID = get_the_id();
    $Images = & get_children( 'post_type=attachment&post_mime_type=image&post_parent='.$postID );
    foreach( $Images as $NewImage ){ $post_titles[] = $NewImage->post_content; }
    foreach($post_titles as $post_title){
    	//CODE OF FUNCTION pibfi_Engine
    }

    And add :

    $replacement = '<span class="pibfi_pinterest">
    	<img%1$ssrc="%2$s.%3$s"%4$s>
    	<span class="xc_pin" onclick="pin_this(event, \''.
    	$pinterest_base_url.
    	'?url='.esc_url($post_url).
    	'&media=%2$s.%3$s'.'&description='.$image["title"].'\')">
    	</span>
    </span>';

    at the beginning of foreach( $images as $image ){ }

    Hi,

    After trying 10s of “solutions” and work arounds to pull the image title or alt I’m about to throw my laptop out the window!

    I’ve tried the above but I’m clearly having a blonde moment.

    Can you please paste the whole edited code you use of the ppibfi_pinterest php file so I can implement this correctly and save my computers life? 🙂

    Thank you!!

    Hi,
    Here the all code for pibfi_Engine function :

    function pibfi_Engine($content) {
    	global $post;
    	$post_url = get_permalink(); //Get the post URL
    	//$post_title = get_the_title($ID); //Get the post title
    
    	$pinterest_base_url = 'http://pinterest.com/pin/create/button/'; //Pinterests URL to create a Pin
    
    	$postID = get_the_id();
    	$Images = & get_children( 'post_type=attachment&post_mime_type=image&post_parent='.$postID );
    
    	foreach( $Images as $NewImage ){
    		//$post_titles[] = $NewImage->post_title;
    		$post_titles[] = $NewImage->post_content;
    	}
    
    	foreach($post_titles as $post_title){
    		$content = pibfi_Engine_normalize_image_paths( $content );
    
    		// Show the pin just in images with the 'pinthis' class
    		if ( get_option('ppibfi_img_pinthis') == 'on' ) {
    			$content = pibfi_Engine_add_pin( $content, $pinterest_base_url, $post_url, $post_title );
    		} else {
    
    			// Show on index.php / home page:
    			if (get_option('ppibfi_pg_index') == "on" && is_home()) {
    				$isOpted = get_post_meta($post->ID, 'xcp_optin_post');
    				if ($isOpted[0] != "on") {
    					$content = pibfi_Engine_add_pin( $content, $pinterest_base_url, $post_url, $post_title );
    				}
    			}
    
    			// Show on single.php:
    			elseif (get_option('ppibfi_pg_single') == "on" && is_single()) {
    				$isOpted = get_post_meta($post->ID, 'xcp_optin_post');
    				if ($isOpted[0] != "on") {
    					$content = pibfi_Engine_add_pin( $content, $pinterest_base_url, $post_url, $post_title );
    				}
    			}
    
    			// Show on page.php:
    			elseif (get_option('ppibfi_pg_page') == "on" && is_page()) {
    				$isOpted = get_post_meta($post->ID, 'xcp_optin_post');
    				if ($isOpted[0] != "on"){
    					$content = pibfi_Engine_add_pin( $content, $pinterest_base_url, $post_url, $post_title );
    				}
    			}
    
    			// Show on category.php / archive.php:
    			elseif (get_option('ppibfi_pg_cat') == "on" && is_category()) {
    				$content = pibfi_Engine_add_pin( $content, $pinterest_base_url, $post_url, $post_title );
    			}
    		}
    
    	}//foreach($post_titles as $post_title)
    
    	// Print out the content with the changes on images
    	return $content;
    }

    And the all code for pibfi_Engine_add_pin function :

    /* This function adds the pin at each post's image */
    function pibfi_Engine_add_pin( $content, $pinterest_base_url, $post_url, $post_title ){
    	// I had to change this string in order to use the sprintf function.
    	// Regular expression that finds all post's images
    	$pattern = '/<img(.*?)src=[\'"](.*?).(bmp|gif|jpeg|jpg|png)[\'"](.*?)>/i';
    	// Array to store the images that matches
    	$matches = array();
    	// Execute the regular expression
    	preg_match_all($pattern, $content, $matches);
    	// Array to store the images and its properties
    	$images = array();
    	// Image count
    	$image_count = 0;
    	// Loop to join the tag image properties with its matches
    	for( $i = 0; $i < sizeof($matches[0]); $i++ ){
    		$images[ $image_count ]['tag'] = $matches[0][$i];
    		$images[ $image_count ][1] = $matches[1][$i]; // match 1 - content before the src attr
    		$images[ $image_count ][2] = $matches[2][$i]; // match 2 - image url without extension
    		$images[ $image_count ][3] = $matches[3][$i]; // match 3 - the extension
    		$images[ $image_count ][4] = $matches[4][$i]; // match 4 - content after the src attr
    
    		$pos = strpos($matches[1][$i], "title");
    		if($pos === false){
    			$pos = strpos($matches[4][$i], "title");
    			$title = substr($matches[4][$i], $pos+7);
    		}
    		else{
    			$title = substr($matches[1][$i], $pos+7);
    		}
    		$pos_end = strpos($title, '"');
    		$title = substr($title,0,$pos_end);
    		$images[ $image_count ]['title'] = str_replace('"', '',$title);
    
    		$image_count++;
    	}
    	// Loop to check if any image has the 'needed' pin class: pinthis (pibfi_ShowButton)
    	$any_image_has_the_needed_pin_class = ( get_option('ppibfi_img_pinthis') == 'on' ) ? true : false;
    	for( $i=0; $i < sizeof( $images ); $i++ ){
    		$needed = pibfi_Engine_check_if_the_image_has_pinthis_class( $images[ $i ][ 'tag' ] );
    		if( $needed ){
    			$any_image_has_the_needed_pin_class = true;
    		}
    		$images[ $i ][ 'pinthis' ] = $needed;
    	}
    	// Loop to replace the normal tag by the html with the pin, if it is necessary
    	foreach( $images as $image ){
    		$replacement = '<span class="pibfi_pinterest">
    			<img%1$ssrc="%2$s.%3$s"%4$s>
    			<span class="xc_pin" onclick="pin_this(event, \''.
    			$pinterest_base_url.
    			'?url='.esc_url($post_url).
    			'&media=%2$s.%3$s'.'&description='.$image["title"].'\')">
    			</span>
    		</span>';
    		// If the post has any image with the (pibfi_ShowButton) class, the pin'll be showed in just these images
    		if( $any_image_has_the_needed_pin_class ){
    			if( $image[ 'pinthis' ] ){
    				$image_tag = sprintf( $replacement, $image[1], $image[2], $image[3], $image[4]);
    				$content = str_replace( $image['tag'], $image_tag, $content);
    			}
    		} else {
    			// Check if the image should or shoudn't has the pin
    			if( pibfi_Engine_check_if_the_image_has_the_forbidden_class( $image['tag'] ) ){
    				// If it shoud do the replacement
    				$image_tag = sprintf( $replacement, $image[1], $image[2], $image[3], $image[4]);
    				$content = str_replace( $image['tag'], $image_tag, $content);
    			}
    		}
    	}
    	return $content;
    }

    That’s all ^^

    Oh damn this doesn’t work for me 🙁

    Thanks for posting this though!

    I wonder why it doesn’t work… I just have a blank description box when then pinterest pop up appears (as opposed to the standard post title from original coding).

    Going to tear my hair out!

    The “title” must be completed for images that this piece of code works.

    Oh my gosh I love you!! Haha! Silly me only checked the 2 pictures that didn’t have a title tag.

    THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU!!!!!!!

    De nada 😉

    Hey Melusine29,

    I am getting this error on some of my posts and I have absolutely no idea why. I’ve tried creating a brand new post and the one I published today was fine but if I preview my drafts they get the error now too.

    Warning: Invalid argument supplied for foreach() in /home/ldingjan/public_html/theidentity.me/wp-content/plugins/pinterest-pin-it-button-for-images/ppibfi_pinterest.php on line 63

    Line 63 is foreach($post_titles as $post_title){

    What could be the problem? I’ve tried everything I can possibly think of but I can’t consistently replicate the error. It’s driving me nuts!

    This published post has the error ::
    http://theidentity.me/the-filler-outable-guide-to-clients-cash-and-fun-is-here/

    Thank you very much!

    Hi elledee

    Have you a title for your image ?

    After
    foreach( $Images as $NewImage ){ $post_titles[] = $NewImage->post_content; }

    Try a var_dump of $post_titles, there are a result ?

    Thank you for addressing this issue. This plug-in was pulling the title/alt until about two weeks ago.

    I’ve replaced the code with your supplied solution above; however, I am having two issues.

    1. Only newly inserted images are functioning while none of the other post images (which do have titles, btw) are coming up blank. Is there a way to fix this without having to save & re-upload each image?

    2. The titles are missing the first letter. Example: Welcome shows up “elcome”.

    Any and all suggestions are welcome. Please help me fix these issues! I love this plug-in and use it for all my clients… but this problem is, well, a problem.

    Thank you!

    Hello – thank you for posting this – but I end up with a blank description on the Pinterest form even though both the title and alt text for images are filled in.
    Any Advice?

Viewing 11 replies - 1 through 11 (of 11 total)
  • The topic ‘Display the title of the image’ is closed to new replies.