Skip to content

Instantly share code, notes, and snippets.

@billerickson
Last active January 21, 2021 01:17
  • Star 6 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save billerickson/4675266 to your computer and use it in GitHub Desktop.
Use the built-in post counter
<?php
/**
* 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_post', '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' );
@JiveDig
Copy link

JiveDig commented Jan 12, 2017

Not a huge deal, but missing semicolon at the end of the cho on line 24.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment