Lego2012
12/13/2016 - 3:50 PM

Built-in post counter

Built-in post counter

<?php
//* Do NOT include the opening php tag shown above. Copy the code shown below.

/**
 * Use the built-in post counter
 * 
 * Sometimes you'll want to keep track of which post you're on in a loop.
 * Some people create their own $loop_counter (ex: Genesis, https://gist.github.com/4675237 ).
 * There's a better way! A loop counter is built into $wp_query. Ex:
 * 
 * global $wp_query;
 * echo $wp_query->current_post
 * 
 * Count starts at 0 (first post is 0, second post is 1 )
 */
 
/**
 * Display ad after third post
 * 
 * @author Bill Erickson
 * @link http://www.billerickson.net/code/use-the-built-in-post-counter/
 */
function be_ad_after_third_post() {
  global $wp_query;
  if( 2 == $wp_query->current_post )
    echo 'This is an ad!'
}
add_action( 'genesis_after_entry', 'be_ad_after_third_post' );

/**
 * Add class to first post
 * 
 * @author Bill Erickson
 * @link http://www.billerickson.net/code/use-the-built-in-post-counter/
 * 
 * @param array $classes
 * @return array
 */
function be_class_on_first_post( $classes ) {
  global $wp_query;
  if( 0 == $wp_query->current_post )
    $classes[] = 'first-post';
    
  return $classes;
}
add_filter( 'post_class', 'be_class_on_first_post' );