WordPress.org

Ready to get started?Download WordPress

Forums

Posts 2 Posts
[resolved] Connection Ordering (16 posts)

  1. jdunneirl
    Member
    Posted 2 years ago #

    Hi ya,

    I having lots of trouble with connection ordering

    To register the connection I use

    global $carousel_connection;
    $carousel_connection =	p2p_register_connection_type( array(
    			'to' => 'carouselcontent',
    			'from' => 'carousel',
    			'title' =>  array('to'=> 'Content','from'=> 'Carousel'),
    			'sortable' => '_order'
    		) );
    
    add_action( 'init', 'carousel_connection', 100 );

    Then on display I use
    $carouselContent = new WP_Query( array( 'post_type' => 'carouselcontent', 'post_per_page' => -1,'connected' => $carouselToUse,'connected_orderby' => '_order', 'order' => 'DESC'));

    Should this not work? I can drag and drop in the admin but the front end display ignores the order :(

    http://wordpress.org/extend/plugins/posts-to-posts/

  2. scribu
    Member
    Plugin Author

    Posted 2 years ago #

    No, it won't work. You should use get_connected() instead:

    https://github.com/scribu/wp-posts-to-posts/wiki/Basic-usage

  3. jdunneirl
    Member
    Posted 2 years ago #

    Thanks Scribu,

    Still having problems though

    how do I convert the wp_query to get_connected()

    $carouselContent = new WP_Query(  array( 'post_type' => 'carouselcontent', 'post_per_page' => -1,'connected' => $carouselToUse,'connected_orderby' => '_order', 'order' => 'DESC'));
    
    				$carouselContent = $carousel_connection->get_connected(array('connected' => $carouselToUse));

    I am using 0.9 of the plugin,

    Also this is not within the loop as I need to pass the post ID I am referncing

    John

  4. jdunneirl
    Member
    Posted 2 years ago #

    Oh just to follow up

    when I use

    $carouselContent = p2p_type( 'posts_pages' )->get_connected( get_queried_object_id() );

    p2p_register_connection_type( array(
    			'id' => 'posts_pages',
    			'to' => 'carouselcontent',
    			'from' => 'carousel',
    			'title' =>  array('to'=> 'Content','from'=> 'Carousel'),
    			'sortable' => '_order'
    		) );

    I get

    Fatal error: Call to undefined function p2p_type()

    If I use

    $carouselContent = $carousel_connection->get_connected(array('connected' => $carouselToUse));

    I also error

    Warning: Invalid post type. Expected 'carousel' or 'carouselcontent', but received ''

  5. jdunneirl
    Member
    Posted 2 years ago #

    I sorted it turns out I was sending in a blank :(

    thanks for all your help scribu, just one question how can you use posts2posts with wpquery I am not completely understanding the get_connected is this the replacement for wp_query and does it take all the same args?

  6. scribu
    Member
    Plugin Author

    Posted 2 years ago #

    get_connected() takes a post as the first argument:

    $carousel_connection->get_connected( $carouselToUse );

    and optionally any other WP_Query vars as the second argument:

    $carousel_connection->get_connected( $carouselToUse, array(
      'posts_per_page' => 10,
      '
    ) );

    Note that you don't have to specify the post type or any other P2P specific arg.

    Also, you should update to P2P 0.9.5 as older versions are not supported.

  7. Nicholas
    Member
    Posted 2 years ago #

    Hi,

    I love this plugin! And the drag and drop ordering is great! However, I am having a similar problem since the update, and I am a little confused on how to correctly do this now.

    Right now I have, to connect 2 custom post types. ie. Songs to Albums:

    // Find connected songs
    $connected = new WP_Query( array(
    'post_type' => 'song',
    'nopaging' => false,
    'posts_per_page' => 30,
    'connected_orderby' => 'order',
    'connected_from' => get_queried_object_id()
    ) );

    The sorting works on the admin side. But now the order seems to be random on the front end and does not follow a discernible order.

  8. scribu
    Member
    Plugin Author

    Posted 2 years ago #

    @Nicholas: I already described what you need to do in my previous replies.

  9. Nicholas
    Member
    Posted 2 years ago #

    Hi scribu,
    I have been going through this post, as well as your GitHub page, but as mentioned, I am confused by the changes.
    I am not sure what to use and what to change. When I follow the process outlined in your Basic Usage example, I get an error. With the example above I am also not sure what $carouselToUse is... You say it is a post, but what is it being used for? My example does not make use of a variable in that way, I only have the array. Do I not need any of that anymore?

  10. scribu
    Member
    Plugin Author

    Posted 2 years ago #

    When I follow the process outlined in your Basic Usage example, I get an error.

    What error? Are you using version 0.9.5?

  11. Nicholas
    Member
    Posted 2 years ago #

    I am using 0.9.5. I decided to start from scratch again and it is now working and ordering correctly!

    Thank you very much scribu! Great plugin!

  12. Nicholas
    Member
    Posted 2 years ago #

    Hi,

    I am not sure what I have done wrong. When I last posted, my ordering was working. Now I check again, after changing nothing in my code and the ordering is wrong again.

    Below is the code from my functions.php file:

    // Activating Post to Page relationship via Posts2Posts plugin. Source: https://github.com/scribu/wp-posts-to-posts/wiki/Basic-usage */
    function ncp_lr_connection_types(){
    	if ( !function_exists( 'p2p_register_connection_type' ) )
    		return;
    
    	p2p_register_connection_type( array(
    		'id' => 'posts_pages',
    		'from' => 'album',
    		'to' => 'song',
    		'sortable' => 'order'
    	) );
    }
    
    add_action('init','ncp_lr_connection_types', 100);

    Here is my code in my page, used to display the connections:

    <?php
    $connected = p2p_type( 'posts_pages' )->get_connected( get_queried_object_id() );
    											// Display connected pages																					echo '<ul>';
    																						while ( $connected->have_posts() ) : $connected->the_post();
    $more = 0;?>
    													<li id="song-<?php the_ID();?>">
    etc...

    I must be missing something here. As far as I can tell, the above code is correct. Or not?

    Any help would be greatly appreciated.

    Thank you.

    Note: Using WP 3.2.1 and v 0.9.5 of plugin. Also using WP E-commerce and Gravity Forms on the site.

  13. scribu
    Member
    Plugin Author

    Posted 2 years ago #

    If you haven't changed the code related to P2P it means something else changed. Perhaps some other plugin is conflicting with it.

  14. Nicholas
    Member
    Posted 2 years ago #

    So my code above is correct?

    Also, any known plugin conflicts?

  15. scribu
    Member
    Plugin Author

    Posted 2 years ago #

    Yes, the code is correct.

    No known plugin conflicts.

  16. Nicholas
    Member
    Posted 2 years ago #

    Thank you for the rapid responses! Much appreciated!

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic