Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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

This comment has been minimized.

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
You can’t perform that action at this time.