Title: [Plugin: Posts 2 Posts] duplicates using p2p_get_connected
Last modified: August 19, 2016

---

# [Plugin: Posts 2 Posts] duplicates using p2p_get_connected

 *  Resolved [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/)
 * The single page contains a product. What I’m trying to accomplish with posts2posts
   is to have it relate to the accessories for this product as well as show related
   products. Both of these are custom posts.
 * The problem that I’m having is that when using p2p_get_connected it doesn’t filter
   the results and I always get both accessories and products.
 * I have tried all types of combinations but have had no success. An additional
   complication is that the custom post product relates to itself, so that I can
   get the related products.
 * Some help to steer me in the right direction would be greatly appreciated.
 * My code in the functions.php file is as follows:
 *     ```
       add_action('init', 'products_acccessories_init', 100);
   
       function products_acccessories_init() {
   
       	register_post_type('products',
       		array(
       			'label'           => 'Products',
       			'public'          => true,
       			'show_ui'         => true,
       			'query_var'       => 'products',
       			'rewrite'         => array('slug' => 'products'),
       			'hierarchical'    => false,
       			'prevent_duplicates' => false,
       			//'supports'      => array('title','editor','custom-fields'),
       		)
       	);
   
       	register_post_type('products_accessories',
       		array(
       			'label'           => 'Products Accessories',
       			'public'          => true,
       			'show_ui'         => true,
       			'query_var'       => 'products_accessories',
       			'rewrite'         => array('slug' => 'products_accessories'),
       			'hierarchical'    => true,
       			'prevent_duplicates' => false,
       			//'supports'      => array('title','editor','custom-fields'),
       		)
       	);
   
       	if ( !function_exists('products_acccessories_init') )
       		return;
   
       		p2p_register_connection_type( 'products_accessories', 'products' );
       		p2p_register_connection_type( 'products', 'products' );
   
       	global $wp_rewrite;
       	$wp_rewrite->flush_rules(false);  // This only needs be done first time
   
       }
       ```
   
 * and my code in the single-product.php page is:
 *     ```
       <?php
       	$upload_dir = wp_upload_dir();
       	if (count($accesories = p2p_get_connected(get_the_ID(),'from', 'products_accessories'))):
       	//looks up in the post to post table the accessories related to the product. Setup in the ups product admin page
       		foreach($accesories as $accesory_id):
       			$accesory = get_post($accesory_id);?>
   
       			<div class="accessory_item_wrapper">
       				<div class="accessory_thumbnail">
       						<?php  if (get_the_post_thumbnail($accesory->ID, 'thumbnail')):?>
       							<a href=" <?php echo get_permalink($accesory->ID); ?> ">
       								<?php echo get_the_post_thumbnail($accesory->ID, 'thumbnail'); ?>
       							</a>
       						<!-- if no picture insert logo -->
       						<?php else:?>
       							<a href="<?php echo get_permalink($accesory->ID); ?>">
       								<img src="<?php echo $upload_dir['baseurl'].'/2010/11/product_blank_background-150x150.png'; ?>"
       								alt="<?php echo get_permalink($accesory->ID);  ?>" width='150' height='150'  />
       							</a>
       						<?php endif;?>
       				</div> <!-- end accessory_thumbnail -->			
   
       			</div> <!-- end accessory_item_wrapper -->
       		<?php endforeach;
          else:?>
          <div class="description_accessory_wrapper">
       	 <?php echo "there are no accessories associated to this product"; ?>
       	</div> <!-- end description_accessory_wrapper -->
       <?php endif;?>
       ```
   
 * Thanks a lot for the plug-in but it escapes me what I’m missing.

Viewing 15 replies - 1 through 15 (of 15 total)

 *  Thread Starter [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020690)
 * Does anyone have an answer? Please is becoming kind of urgent…
 * Thanks
 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020698)
 * First of all, you shouldn’t call p2p_get_connected() directly.
 * Use WP_Query or get_posts(), as described here:
 * [http://wordpress.org/extend/plugins/posts-to-posts/](http://wordpress.org/extend/plugins/posts-to-posts/)
 * or here:
 * [http://scribu.net/wordpress/posts-to-posts/version-0-6.html](http://scribu.net/wordpress/posts-to-posts/version-0-6.html)
 *  Thread Starter [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020702)
 * Thanks,
    I made to partially work. However, I cannot seem to access the meta 
   data for the product.
 * Here is the code:
 *     ```
       <?php
       	$connected = new WP_Query( array(
       		'post_type' => 'product',
       		'connected_from' => get_the_ID(),
       		'nopaging' => true,
       		'suppress_filters' => false
       	) );
       ?>
       <div class="products_wrapper">
       	<h2>you may also be interested</h2>
   
       		<?php if (have_posts()) : while( $connected->have_posts() ) : $connected->the_post();
       		$connection_type = p2p_get_meta( $post->p2p_id, 'connection_type', true );
       		?>
       			<h3><?php the_title();?></h3>
       			<ul>
       				<li>
       					<a href=" <?php echo get_permalink($connection_type->ID); ?> ">
       						<?php echo get_the_post_thumbnail($connection_type->ID, 'thumbnail'); ?>
       					</a>
       				</li>
       				<li><?php echo get_the_excerpt(); ?></li>
       				<li><?php echo p2p_get_meta( $connection_type->p2p_id, 'characteristic', true ); ?></li>
       			</ul>
   
       		<?php endwhile;
       			wp_reset_postdata();?>
   
       	<?php else:?>
       		<li>
       		   <div class="description_product_wrapper">
       			 <?php echo "there are no accessories associated to this product"; ?>
       			</div> <!-- end description_accessory_wrapper -->
       		</li>
       	<?php endif;?>
       </div>
       <!-- end products_wrapper -->
       ```
   
 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020704)
 * You seem to think that there’s a ‘connection_type’ custom field that contains
   the post id.
 * This is not the case. While in The Loop, the connected post is stored in the `
   $post` global variable.
 * More practically, replace this:
 * `echo get_permalink($connection_type->ID);`
 * with this:
 * `echo get_permalink(get_the_ID());`
 *  Thread Starter [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020705)
 * Sorry Scribu,
    but it’s this bit: `<li><?php echo p2p_get_meta( $connection_type-
   >p2p_id, 'characteristic', true ); ?></li>` that is giving me problems as is 
   not outputing the ‘characteristic’ custom field.
 * Any suggestions as why this might be.
 * BTW, I would sincerely like to thank you for all your time. It is greatly appreciated.
 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020706)
 * Is ‘characteristic’ a custom field of the relationship itself?
 * If yes, then how are you storing it?
 * If no, replace that line with this:
 *     ```
       <li><?php echo get_post_meta( get_the_ID(), 'characteristic', true ); ?></li>
       ```
   
 * Note that you’re confusing the connection id with the connected post id. They’re
   two different things.
 *  Thread Starter [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020715)
 * I changed it but did not update. ‘characteristic’ is the actual custom field.
   
   The way I was trying to access it – following the instructions you have for ver.
   0.5 is: `<li><?php echo p2p_get_meta( $post->p2p_id, 'characteristic', true );?
   ></li>`. While on the single page I echo this same ‘characteristic’ as follows:`
   echo get_post_meta( $post->ID, 'characteristic',true);`
 * I can see why you are saying that I am confusing the connection and the post 
   id, but I did realize that and changed it. However, even trying to access the
   custom field as above is outputs nothing.
 * Thanks
 *  Thread Starter [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020719)
 * Sorry, any updates on how I could solve this issue?
 * thanks in advance.
 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020720)
 * Please paste the updated code that you’re using.
 *  Thread Starter [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020721)
 * Hi Scribu,
    the code has not changed much. all that I have modified as I explained
   in my last post is the: `<li><?php echo p2p_get_meta( $post->p2p_id, 'characteristc',
   true ); ?></li>`
 * to try to access the p2p_id properties. On that same single page I can access
   them with the:
    `echo get_post_meta( $post->ID, 'characteristic',true);`
 * Just in case you can see something that has escaped me here is the modified code:
 *     ```
       <?php
       /*
       Template Name: related_products_template
       */
       ?>
       <?php
       	$connected = new WP_Query( array(
       		'post_type' => 'product',
       		'connected_from' => get_the_ID(),
       		'nopaging' => true,
       		'suppress_filters' => false
       	) );
       ?>
       <div id="products_wrapper">
       	<h3>you may also be interested in...</h3>
       		<?php if ($connected->have_posts()) : while( $connected->have_posts() ) : $connected->the_post();
       				$connection_type = p2p_get_meta( $post->p2p_id, 'connection_type', true );
       		?>
       		<div class="products_item_wrapper">
       			<ul>
       				<li class="prod_pic">
       					<!--check if post has an image otherwise output generic eq logo-->
       					<?php  if (get_the_post_thumbnail($connection_type->ID, 'thumbnail')):?>
       						<a href=" <?php echo get_permalink(get_the_ID()); ?> ">
       							<?php echo get_the_post_thumbnail($connection_type->ID, 'thumbnail'); ?>
       						</a>
       					<?php else:?>
       						<a href="<?php echo get_permalink($accesory->ID); ?>">
       							<img src="<?php echo $upload_dir['baseurl'].'/2010/11/product_blank_background-150x150.png'; ?>"
       							alt="<?php echo get_permalink($accesory->ID);  ?>" width='150' height='150'  />
       						</a>
       					<?php endif;?>
       				</li>
       						<li><?php echo p2p_get_meta( $post->p2p_id, 'characteristc', true ); ?></li>
       				<li class="title">
       						<a href="<?php echo get_permalink($accesory->ID); ?>">
       							<?php the_title();?>
       						</a>
       				</li>
       				<li>
       					<ul class="prod_description">
       						<li>
       							<?php
       							  $excerpt = get_the_excerpt();
       							  echo string_limit_words($excerpt,25);
       							?>
       						</li>
       					</ul>
       				</li>
       			</ul>
       		</div>
       		<!-- end products_item_wrapper -->
       		<?php endwhile;
       			wp_reset_postdata();?>
   
       	<?php else:?>
       		<li>
       		   <div class="products_item_wrapper">
       			<ul class="prod_description">
       				<li><?php echo "there seem to be no associated products"; ?></li>
       			</ul>
       			</div> <!-- end products_item_wrapper -->
       		</li>
       	<?php endif;?>
       </div>
       <!-- end products_wrapper -->
       ```
   
 * Thanks again
 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020722)
 * Ok, and why didn’t you do the replacement I recommended previously?
 * How else can I say it? **You do not have any p2p_id properties.**
 * Just plain old post custom fields that you access with the plain old get_post_meta()
   function using the plain old $post->ID property.
 * p2p_get_meta() and $post->p2p_id would only work with the new ‘fields’ API introduced
   in [version 0.7](http://scribu.net/wordpress/posts-to-posts/p2p-0-7.html).
 * The example you saw in version 0.5 was functional, but it assumed you made your
   own metabox for saving connection information.
 * PS: You mispeled the meta key: “characteristc”
 *  Thread Starter [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020723)
 * Thanks for the answer.I did include your suggestion but for some reason it did
   not work. that is why I did not include it.
 * I am using version 0.7 however – and the reason behind this confusion – is that
   even after reading the documentation of the various versions and reading most
   of the posts for the plugin, it is VERY hard to make out what functionality carries
   from one version to the next as everything is very peacemeal.
 * Don’t take me wrong, I appreciate very much all the effort that you have put 
   into helping me. But I think that you would waste less time if there was a complete
   document with two or three scenarios on how to use the pluging.
 * Thanks again and sorry for the oversight.
 *  Thread Starter [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020724)
 * BTW. Here is the working sample in case it is of some use for future users.
 *     ```
       <?php
       	$connected = new WP_Query( array(
       		'post_type' => 'product',
       		'connected_from' => get_the_ID(),
       		'nopaging' => true,
       		'suppress_filters' => false
       	) );
       ?>
       <div id="products_wrapper">
       	<h3>you may also be interested in...</h3>
       		<?php if ($connected->have_posts()) : while( $connected->have_posts() ) : $connected->the_post();
       				$connection_type = p2p_get_meta( $post->p2p_id, 'connection_type', true );
       				$characteristic_01 = get_post_meta( get_the_ID(), 'characteristic', true );
       		?>
       		<div class="products_item_wrapper">
       			<ul>
       				<li class="prod_pic">
       					<!--check if post has an image otherwise output generic eq logo-->
       					<?php  if (get_the_post_thumbnail($connection_type->ID, 'thumbnail')):?>
       						<a href=" <?php echo get_permalink(get_the_ID()); ?> ">
       							<?php echo get_the_post_thumbnail($connection_type->ID, 'thumbnail'); ?>
       						</a>
       					<?php else:?>
       						<a href="<?php echo get_permalink($accesory->ID); ?>">
       							<img src="<?php echo $upload_dir['baseurl'].'/2010/11/product_blank_background-150x150.png'; ?>"
       							alt="<?php echo get_permalink($accesory->ID);  ?>" width='150' height='150'  />
       						</a>
       					<?php endif;?>
       				</li>
       						<li><?php echo $characteristic_01; ?></li>
       				<li class="title">
       						<a href="<?php echo get_permalink($accesory->ID); ?>">
       							<?php the_title();?>
       						</a>
       				</li>
       				<li>
       					<ul class="prod_description">
       						<li>
       							<?php
       							  $excerpt = get_the_excerpt();
       							  echo string_limit_words($excerpt,25);
       							?>
       						</li>
       					</ul>
       				</li>
       			</ul>
       		</div>
       		<!-- end products_item_wrapper -->
       		<?php endwhile;
       			wp_reset_postdata();?>
   
       	<?php else:?>
       		<li>
       		   <div class="products_item_wrapper">
       			<ul class="prod_description">
       				<li><?php echo "there seem to be no associated products"; ?></li>
       			</ul>
       			</div> <!-- end products_item_wrapper -->
       		</li>
       	<?php endif;?>
       </div>
       <!-- end products_wrapper -->
       ```
   
 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020725)
 * You mean like this? 🙂
 * [https://github.com/scribu/wp-posts-to-posts/wiki/Connection-information](https://github.com/scribu/wp-posts-to-posts/wiki/Connection-information)
 * Thanks for the nudge. It’s a wiki, so you can edit it too, if you have a github
   account.
 *  Thread Starter [argeee](https://wordpress.org/support/users/argeee/)
 * (@argeee)
 * [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020726)
 * What can I say…
    I really don’t know where you find the time..
 * Thanks for the plugin and now for the tut.

Viewing 15 replies - 1 through 15 (of 15 total)

The topic ‘[Plugin: Posts 2 Posts] duplicates using p2p_get_connected’ is closed
to new replies.

 * ![](https://s.w.org/plugins/geopattern-icon/posts-to-posts_7a8e9d.svg)
 * [Posts 2 Posts](https://wordpress.org/plugins/posts-to-posts/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/posts-to-posts/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/posts-to-posts/)
 * [Active Topics](https://wordpress.org/support/plugin/posts-to-posts/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/posts-to-posts/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/posts-to-posts/reviews/)

 * 15 replies
 * 2 participants
 * Last reply from: [argeee](https://wordpress.org/support/users/argeee/)
 * Last activity: [15 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-duplicates-using-p2p_get_connected/#post-2020726)
 * Status: resolved