Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trying to organize post type by connected post-type meta value #458

Open
andywkeith opened this issue Sep 16, 2014 · 1 comment
Open

Trying to organize post type by connected post-type meta value #458

andywkeith opened this issue Sep 16, 2014 · 1 comment

Comments

@andywkeith
Copy link

Hey there,

First of all, awesome plugin! I've used it a couple of times for some basic custom-post type connections and it's worked out great! I'm currently developing an event listings website, and am using two connected post-types: Artists and Events. I currently have a Complete Listings section that's displaying each artist alphabetically, and the events connected to that artists by event date (the meta value). See: http://puu.sh/bBDrN/9e645a5f0e.png.

My client recently asked if we can organize the Complete Listings, showing artists that have the most recent event dates first but still having their shows grouped together. For example, if you look at the screenshot above, they would like the Hey Rosetta! box to show before the Adam Baldwin box, because they have a show on the 17th, compared to the 27th.

Here's my current code for the Complete Listings:

<div class="col-md-9">
        <h2>Complete Listings</h2>
            <?php
                $my_query = new WP_Query( array(
                    'post_type' => 'base_artists',
                    'order'               => 'ASC',
                    'orderby'             => 'name',
                    'posts_per_page'  => -1,
                ) );
                p2p_type( 'events_to_artists' )->each_connected( $my_query, array(), 'events' );
                while ( $my_query->have_posts() ) : $my_query->the_post();
                $link = get_permalink($post->ID);
                $connected = new WP_Query( array(
                      'connected_type'      => 'events_to_artists',
                      'connected_items'     => $post,
                      'order'               => 'ASC',
                      'orderby'             => 'meta_value_num',
                      'meta_key'            => '_base_event_date',
                      'meta_query'          => array(
                        array(
                            'key'       => '_base_event_date',
                            'value'     => time(),
                            'type'      => 'NUMERIC',
                            'compare'   => '>'
                        )),
                ) );
                if ($connected->have_posts() ):  
            ?>
            <!-- Show Listing -->
            <div class="listing col-md-12" id="<?php the_title() ;?>">
                <h3><?php the_title(); ?><?php $special_guest =  get_post_meta( $post->ID, '_base_special_guest', true ); ?> <?php if(!empty($special_guest)): ?>w/ special guests&nbsp;<?php echo $special_guest ;?><?php endif; ?></h3>
                <div class="row">
                    <div class="band-small col-sm-2">
                        <div class="img-responsive"><?php the_post_thumbnail('band-small'); ?></div>
                    </div>
                    <div class="listing-table col-sm-10">
                        <table class="table table-striped table-condensed table-hover">
                            <tbody>    
                                <?php 
                                    if ( $connected->have_posts() ) :
                                    while ( $connected->have_posts() ) : $connected->the_post();  
                                ?> 

                                     <?php
                                        $venue_name = get_post_meta( $post->ID, '_base_event_venue_name', true );
                                        $venue_address = get_post_meta( $post->ID, '_base_event_venue_address', true );
                                        $venue_city = get_post_meta( $post->ID, '_base_event_venue_city', true );
                                        $venue_province = get_post_meta( $post->ID, '_base_event_venue_province', true );
                                        $date = get_post_meta( $post->ID, '_base_event_date', true );
                                        $doors = get_post_meta( $post->ID, '_base_event_time_door', true );
                                        $start = get_post_meta( $post->ID, '_base_event_time_start', true );
                                        $advance_price = get_post_meta( $post->ID, '_base_event_advance_price', true );
                                        $purchase_link = get_post_meta( $post->ID, '_base_event_purchase_link', true );
                                        $door_price = get_post_meta( $post->ID, '_base_event_door_price', true );
                                        $event_type = get_post_meta( $post->ID, '_base_event_type', true );
                                        $maps = get_post_meta( $post->ID, '_base_event_map', true );
                                    ?>
                                    <tr>
                                        <td class="market"><?php echo $venue_city ;?>, <?php echo $venue_province ;?></td>
                                        <td class="date"><?php echo date('M. j', $date ) ;?></td>
                                        <td class="venue"><?php echo $venue_name ;?></td>
                                        <td class="more"><a href="<?php echo $link ;?>" class="more">More info...</a></td>
                                        <td class="buy"><a href="<?php echo $purchase_link ;?>" class="btn btn-danger">Buy Tickets</a></td>
                                    </tr>
                                <?php
                                    endwhile;
                                    wp_reset_postdata();
                                    endif;
                                ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div> <!-- End Show Listing -->
        <?php 
            endif;
            endwhile;
        ?>
    </div> <!-- End Complete Listings -->

We are stumped at what the best way to re-write this would be. Any help would be greatly appreciated.

Thanks,

Andy

@andywkeith
Copy link
Author

Making some progress, but still can't figure it out 100%. Tried using "connected_type", "connected_to" and "connected_query" to sort by the Event meta value but no go. See:

<div class="col-md-9">
        <h2>Complete Listings</h2>
            <?php
                $my_query = new WP_Query( array(
                    'post_type' => 'base_artists',
                    'connected_type' => 'events_to_artists',
                    'connected_to' => 'any',
                    'connected_query' => array(
                        'orderby'             => 'meta_value_num',
                        'meta_key'            => '_base_event_date',
                        'meta_query'          => array(
                            array(
                                'key'       => '_base_event_date',
                                'value'     => time(),
                                'type'      => 'NUMERIC',
                                'compare'   => '>'
                            )),
                    ),
                    'posts_per_page'  => -1,
                ) );
                p2p_type( 'events_to_artists' )->each_connected( $my_query, array(), 'events' );
                while ( $my_query->have_posts() ) : $my_query->the_post();
                $link = get_permalink($post->ID);
                $connected = new WP_Query( array(
                      'connected_type'      => 'events_to_artists',
                      'connected_items'     => $post,
                      'order'               => 'ASC',
                      'orderby'             => 'meta_value_num',
                      'meta_key'            => '_base_event_date',
                      'meta_query'          => array(
                        array(
                            'key'       => '_base_event_date',
                            'value'     => time(),
                            'type'      => 'NUMERIC',
                            'compare'   => '>'
                        )),
                ) );
                if ($connected->have_posts() ):  
            ?>
            <!-- Show Listing -->
            <div class="listing col-md-12" id="<?php the_title() ;?>">
                <h3><?php the_title(); ?><?php $special_guest =  get_post_meta( $post->ID, '_base_special_guest', true ); ?> <?php if(!empty($special_guest)): ?>w/ special guests&nbsp;<?php echo $special_guest ;?><?php endif; ?></h3>
                <div class="row">
                    <div class="band-small col-sm-2">
                        <div class="img-responsive"><?php the_post_thumbnail('band-small'); ?></div>
                    </div>
                    <div class="listing-table col-sm-10">
                        <table class="table table-striped table-condensed table-hover">
                            <tbody>    
                                <?php 
                                    if ( $connected->have_posts() ) :
                                    while ( $connected->have_posts() ) : $connected->the_post();  
                                ?> 

                                     <?php
                                        $venue_name = get_post_meta( $post->ID, '_base_event_venue_name', true );
                                        $venue_address = get_post_meta( $post->ID, '_base_event_venue_address', true );
                                        $venue_city = get_post_meta( $post->ID, '_base_event_venue_city', true );
                                        $venue_province = get_post_meta( $post->ID, '_base_event_venue_province', true );
                                        $date = get_post_meta( $post->ID, '_base_event_date', true );
                                        $doors = get_post_meta( $post->ID, '_base_event_time_door', true );
                                        $start = get_post_meta( $post->ID, '_base_event_time_start', true );
                                        $advance_price = get_post_meta( $post->ID, '_base_event_advance_price', true );
                                        $purchase_link = get_post_meta( $post->ID, '_base_event_purchase_link', true );
                                        $door_price = get_post_meta( $post->ID, '_base_event_door_price', true );
                                        $event_type = get_post_meta( $post->ID, '_base_event_type', true );
                                        $maps = get_post_meta( $post->ID, '_base_event_map', true );
                                    ?>
                                    <tr>
                                        <td class="market"><?php echo $venue_city ;?>, <?php echo $venue_province ;?></td>
                                        <td class="date"><?php echo date('M. j', $date ) ;?></td>
                                        <td class="venue"><?php echo $venue_name ;?></td>
                                        <td class="more"><a href="<?php echo $link ;?>" class="more">More info...</a></td>
                                        <td class="buy"><a href="<?php echo $purchase_link ;?>" class="btn btn-danger">Buy Tickets</a></td>
                                    </tr>
                                <?php
                                    endwhile;
                                    wp_reset_postdata();
                                    endif;
                                ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div> <!-- End Show Listing -->
        <?php 
            endif;
            endwhile;
        ?>
    </div> <!-- End Complete Listings -->

Close but no cigar!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant