Grid Loop Orderby Issues

Community Forums Forums Design Tips and Tricks Grid Loop Orderby Issues

This topic is: not resolved

This topic contains 2 replies, has 2 voices, and was last updated by  Au Coeur 1 year, 9 months ago.

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #12469

    Au Coeur
    Participant
    Post count: 102

    (The site is http://www.nantucket-bucket.com/, but it has a maintenance screen up so you can’t see it…)

    I have added the grid loop and am trying to get posts to order alphabetically by title, but orderby doesn’t seem to be working.  Here is the code:

     
    /**
    * Possibly amend the loop.
    *
    * Specify the conditions under which the grid loop should be used.
    *
    * @author Bill Erickson
    * @author Gary Jones
    * @link http://code.garyjones.co.uk/genesis-grid-loop-advanced/
    *
    * @return boolean Return true of doing the grid loop, false if not.
    */
    function child_is_doing_grid_loop() {

    // Amend this conditional to pick where this grid looping occurs.
    // This says to use the grid loop everywhere except single posts,
    // single pages and single attachments.
    return ( ! is_singular() );

    }

    /**
    * Grid Loop Arguments
    *
    * Specify all the desired grid loop and query arguments
    *
    * @author Bill Erickson
    * @author Gary Jones
    * @link http://code.garyjones.co.uk/genesis-grid-loop-advanced/
    *
    * @return array $arguments
    */
    function child_grid_loop_arguments() {

    $grid_args = array(
    'orderby' => 'title',
    'order' => 'ASC',
    'features' => 0,
    'feature_content_limit' => 0,
    'feature_image_size' => 0,
    'feature_image_class' => 'aligncenter post-image',
    'grid_content_limit' => 0,
    'grid_image_size' => 'grid-thumbnail',
    'grid_image_class' => 'aligncenter post-image',
    'more' => __( 'Continue reading →', 'genesis' ),

    );

    $query_args = array(
    'posts_per_page' => 15,
    );

    return array(
    'grid_args' => $grid_args,
    'query_args' => $query_args,
    );
    }

    add_action( 'genesis_before_loop', 'child_prepare_grid_loop' );
    /**
    * Prepare Grid Loop.
    *
    * Swap out the standard loop with the grid and apply classes.
    *
    * @author Gary Jones
    * @author Bill Erickson
    * @link http://code.garyjones.co.uk/genesis-grid-loop-advanced/
    */
    function child_prepare_grid_loop() {

    if ( child_is_doing_grid_loop() ) {
    // Remove the standard loop
    remove_action( 'genesis_loop', 'genesis_do_loop' );

    // Use the prepared grid loop
    add_action( 'genesis_loop', 'child_do_grid_loop' );

    // Add some extra post classes to the grid loop so we can style the columns
    add_filter( 'genesis_grid_loop_post_class', 'child_grid_loop_post_class' );
    }

    }

    add_action( 'pre_get_posts', 'child_grid_query' );
    /**
    * Grid query to get the posts that will appear in the grid.
    *
    * Any changes to the actual query (posts per page, category…) should be here.
    *
    * @author Bill Erickson
    * @author Gary Jones
    * @link http://code.garyjones.co.uk/genesis-grid-loop-advanced/
    *
    * @param WP_Query $query
    */
    function child_grid_query( $query ) {

    // Only apply to main query, if this matches our grid query conditional, and if it isn't in the back-end
    if ( $query->is_main_query() && child_is_doing_grid_loop() && ! is_admin() ) {

    // Get all arguments
    $args = child_grid_loop_arguments();

    // Don't edit below, this does the logic to figure out how many posts on each page
    $posts_per_page = $args['query_args']['posts_per_page'];
    $features = $args['grid_args']['features'];
    $offset = 0;
    $paged = $query->query_vars['paged'];
    if ( 0 == $paged )
    // If first page, add number of features to grid posts, so balance is maintained
    $posts_per_page += $features;
    else
    // Keep the offset maintained from our page 1 adjustment
    $offset = ( $paged - 1 ) * $posts_per_page + $features;

    $query->set( 'posts_per_page', $posts_per_page );
    $query->set( 'offset', $offset );
    }

    }

    /**
    * Prepare the grid loop.
    *
    * Only use grid-specific arguments. All query args should be done in the
    * child_grid_query() function.
    *
    * @author Gary Jones
    * @author Bill Erickson
    * @link http://code.garyjones.co.uk/genesis-grid-loop-advanced/
    *
    * @uses genesis_grid_loop() Requires Genesis 1.5
    *
    * @global WP_Query $wp_query Post query object.
    */
    function child_do_grid_loop() {

    global $wp_query;

    // Grid specific arguments
    $all_args = child_grid_loop_arguments();
    $grid_args = $all_args['grid_args'];

    // Combine with original query
    $args = array_merge( $wp_query->query_vars, $grid_args );

    // Create the Grid Loop
    genesis_grid_loop( $args );

    }

    /**
    * Add some extra body classes to grid posts.
    *
    * Change the $columns value to alter how many columns wide the grid uses.
    *
    * @author Gary Jones
    * @author Bill Erickson
    * @link http://code.garyjones.co.uk/genesis-grid-loop-advanced/
    *
    * @global array $_genesis_loop_args
    * @global integer $loop_counter
    *
    * @param array $grid_classes
    */
    function child_grid_loop_post_class( $grid_classes ) {

    global $_genesis_loop_args, $loop_counter;

    // Alter this number to change the number of columns - used to add class names
    $columns = 3;

    // Be able to convert the number of columns to the class name in Genesis
    $fractions = array( '', 'half', 'third', 'fourth', 'fifth', 'sixth' );

    // Only want extra classes on grid posts, not feature posts
    if ( $loop_counter >= $_genesis_loop_args['features'] ) {
    // Make a note of which column we're in
    $column_number = ( ( $loop_counter - $_genesis_loop_args['features'] ) % $columns ) + 1;

    // Add genesis-grid-column-? class to know how many columns across we are
    $grid_classes[] = sprintf( 'genesis-grid-column-%d', $column_number );

    // Add one-* class to make it correct width
    $grid_classes[] = sprintf( 'one-' . $fractions[$columns - 1], $columns );

    // Add a class to the first column, so we're sure of starting a new row with no padding-left
    if ( 1 == $column_number )
    $grid_classes[] = 'first';
    }

    return $grid_classes;

    }

    Any ideas on why this isn’t working?


    Mother. Web & Graphic Designer. Lactation Consultant. Blogging about how it all fits together, most recently from northern Colorado. Visit my blog or my design site.

    #12749

    Jen Baumann
    Keymaster
    Post count: 424

    You probably want to take at this: http://wpsmith.net/2013/genesis/genesis-grid-loop-in-genesis-1-9/. The grid loop has changed with the 1.9 upgrade.


    If you need technical support for your theme please file a ticket.

    The forums are community based. Staff only monitors the forum for issues relating to the forum itself and to redirect users to where they need to go.

    #12813

    Au Coeur
    Participant
    Post count: 102

    Great, thanks!


    Mother. Web & Graphic Designer. Lactation Consultant. Blogging about how it all fits together, most recently from northern Colorado. Visit my blog or my design site.

Viewing 3 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic.