WordPress.org

Ready to get started?Download WordPress

Forums

Pinterest Pin It Button For Images
[resolved] Display the title of the image (12 posts)

  1. Melusine29
    Member
    Posted 1 year ago #

    Hello

    I would like to display the title of the image and not the title of the article, is that possible?

    thank you

    http://wordpress.org/extend/plugins/pinterest-pin-it-button-for-images/

  2. Melusine29
    Member
    Posted 1 year ago #

    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 ){ }

  3. elledee
    Member
    Posted 1 year ago #

    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!!

  4. Melusine29
    Member
    Posted 1 year ago #

    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 ^^

  5. elledee
    Member
    Posted 1 year ago #

    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!

  6. Melusine29
    Member
    Posted 1 year ago #

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

  7. elledee
    Member
    Posted 1 year ago #

    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!!!!!!!

  8. Melusine29
    Member
    Posted 1 year ago #

    De nada ;-)

  9. elledee
    Member
    Posted 1 year ago #

    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!

  10. Melusine29
    Member
    Posted 1 year ago #

    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 ?

  11. janeandesign
    Member
    Posted 1 year ago #

    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!

  12. allisonr@ctpub.com
    Member
    Posted 11 months ago #

    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?

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic

Tags

No tags yet.