Title: [Plugin: Posts 2 Posts] Startswith in WP_Query
Last modified: August 20, 2016

---

# [Plugin: Posts 2 Posts] Startswith in WP_Query

 *  Resolved [salocined](https://wordpress.org/support/users/salocined/)
 * (@salocined)
 * [14 years, 2 months ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/)
 * I successfully get the connected articles on a normal loop.
    On some page, I 
   have a an option to select the first letter to be able to drill down article 
   via this alphabetical letter (A,B,C etc..) so in my wp_query, i do `'query' =
   > $wp_query) ;` or `'query' => $wp_query,'startswith'=>$theletter) ;`
 * When using first query, I get all the connected.
    If i start to drill down, ie
   Selecting A, then only the first record get the connection displayed.
 * So if in first query i had 3 results with 3 connection each, in my second it 
   will return the 3 results but only with the connections of the first one.
 * This is the code I use now to get connected
    `p2p_type( 'posts_to_destinations','
   posts_to_posts' )->each_connected( $wp_query, array(), 'articles' );`
 * This is the previous code I used
 *     ```
       remove_filter( 'posts_where', 'startswithaction' );
        $the_query = null;
        $the_query = new WP_Query( array(
        'suppress_filters' => false,
        'post_type' => array( 'post', 'destination'),
        'connected' => $post->ID
       ) );
       ```
   
 * [http://wordpress.org/extend/plugins/posts-to-posts/](http://wordpress.org/extend/plugins/posts-to-posts/)

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

 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [14 years, 2 months ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659549)
 * `p2p_type( 'posts_to_destinations', 'posts_to_posts' )`
 * The second parameter is ignored. You can query multiple connection types simultaneously
   only by using WP_Query.
 *  Thread Starter [salocined](https://wordpress.org/support/users/salocined/)
 * (@salocined)
 * [14 years, 2 months ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659554)
 * ok, so I changed it to
    `p2p_type('posts_to_destinations' )->each_connected( 
   $wp_query, array(), 'articles' );` and it still works on the first listing, but
   then when I drill down via a letter, not all connection are found.
 * this is my wp_query
 *     ```
       if( !empty($theletter) ) {
       $args = array( 'post_type' => 'destination','paged' => $paged,  'posts_per_page' => $listitems ,'order' => 'ASC', 'orderby' => 'title', 'query' => $wp_query,'startswith'=>$theletter) ;
       }else{
       $args = array( 'post_type' => 'destination','paged' => $paged,'posts_per_page' => $listitems ,'order' => 'ASC', 'orderby' => 'title', 'query' => $wp_query) ;
        }
       ```
   
 * the second one works, but when $theletter is in action, only the first item (
   if there is any connection) will pick up its connection, none other down the 
   list…
 *  Thread Starter [salocined](https://wordpress.org/support/users/salocined/)
 * (@salocined)
 * [14 years, 2 months ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659624)
 * In the same type of problem, on a different page, I display the connected page
   depending on a selection from a select (id)
 * so I have
 *     ```
       $selected = $_GET["optid"];
       $args = array(
       'post_type' => 'post',
       'tax_query' => array(
           array(
       		'taxonomy' => 'authortype',
                 	'field' => 'slug',
                 	'terms' => 'logs'
                 )
                ),
                           'paged' => $paged,
                           'posts_per_page' => $listitems ,
                           'order' => 'DESC',
                           'orderby' => 'title',
                           'query' => $wp_query,
                           'connected_type' => 'posts_to_posts',
                           'connected_items' => $selected
                           ) ;
       ```
   
 * not returning ANY connection via the $selected chosen
 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [14 years, 2 months ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659665)
 * You have to keep in mind that I don’t know all the details of your setup. For
   example, I have no idea what `'query' => $wp_query` does.
 * Like I said in the email, you’ll need to give me some steps to reproduce. For
   example:
 * 1) Use this code to register these post types and these connection types.
    2)
   Use this code to handle ‘startswith’. 3) Run this query with this kind of post
   id.
 * etc.
 * Note that you’ll probably want to use [https://gist.github.com/](https://gist.github.com/)
   for this, since it will likely be a lot of code.
 *  Thread Starter [salocined](https://wordpress.org/support/users/salocined/)
 * (@salocined)
 * [14 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659777)
 * Ok, here we go again,
    I have created a Gist with my CPT and the code used to
   run the listing. See [https://gist.github.com/2281398](https://gist.github.com/2281398)
 * The Query works, but when a letter is selected, ie from the alphabet, only the
   first item in the list will have its connection displayed, ie the icon.
 * To clarify.
    Normal query – Item 1 – Icon connection display – Item 2 – Icon 
   connection display – Item 3 – Item 4 – Icon connection display
 * Start with query
    – Item 1 – Icon connection display – Item 2 – Item 3 – Item
   4
 * In my previous code, to get connected, I used
    `global $post; remove_filter( ‘
   posts_where’, ‘startswithaction’ ); $the_query = null; $the_query = new WP_Query(
   array( ‘suppress_filters’ => false, ‘post_type’ => array( ‘post’, ‘destination’),‘
   connected’ => $post->ID ) ); `
 * hope you can help/
 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [14 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659783)
 * So, you’re saying that `$wp_query` returns the exact same posts in both cases,
   but that in the second case, `each_connected()` doesn’t work properly.
 * You still haven’t added the code that handles ‘startswith’, i.e. `startswithaction()`.
 *  Thread Starter [salocined](https://wordpress.org/support/users/salocined/)
 * (@salocined)
 * [14 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659784)
 * yes $wp_query returns the exact same posts.
    and yes in second case doesn’t work
   properly
 *     ```
       add_action( 'posts_where', 'startswithaction' );
       function startswithaction( $sql ){
           global $wpdb;
           $startswith = get_query_var( 'startswith' );
   
           if( $startswith ){
               $sql .= $wpdb->prepare( " AND $wpdb->posts.post_title LIKE %s ", $startswith.'%' );
           }
   
           return $sql;
       }
       ```
   
 *  Plugin Author [scribu](https://wordpress.org/support/users/scribu/)
 * (@scribu)
 * [14 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659786)
 * Oh, I know what’s going on. The ‘startswithaction’ is applied to the WP_Query
   call from each_connected() too, since you’re using `get_query_var()`.
 * Correct code:
 *     ```
       add_action( 'posts_where', 'startswithaction', 10, 2 );
       function startswithaction( $sql, $wp_query ){
           global $wpdb;
           $startswith = $wp_query->get( 'startswith' );
   
           if( $startswith ){
               $sql .= $wpdb->prepare( " AND $wpdb->posts.post_title LIKE %s ", $startswith.'%' );
           }
   
           return $sql;
       }
       ```
   
 * Told you it wasn’t a bug in P2P. 😉
 *  Thread Starter [salocined](https://wordpress.org/support/users/salocined/)
 * (@salocined)
 * [14 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659787)
 * yeap that fixed it nicely…
    thx very much again
 * BELIEVE in the P2P
 * 😉

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

The topic ‘[Plugin: Posts 2 Posts] Startswith in WP_Query’ 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/)

 * 9 replies
 * 2 participants
 * Last reply from: [salocined](https://wordpress.org/support/users/salocined/)
 * Last activity: [14 years, 1 month ago](https://wordpress.org/support/topic/plugin-posts-2-posts-startswith-in-wp_query/#post-2659787)
 * Status: resolved