Created
July 25, 2012 10:33
-
-
Save keithdevon/3175471 to your computer and use it in GitHub Desktop.
The member archive show more
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* Archive listings */ | |
global $slt_post_type_object, $slt_banner_id; | |
// Order resource by title ???? not working | |
if ( is_post_type_archive( 'knowledge' ) ) | |
query_posts( 'post_type=member&orderby=post_title' ); | |
// knowledge filter? | |
$slt_theme = null; | |
if ( isset( $_GET['locality_knowledge'] ) ) | |
$slt_theme = get_term( $_GET['locality_knowledge'], 'knowledge' ); | |
get_header(); | |
?> | |
<div id="crumbs"> | |
<a id="parent-crumb" href="<?php echo bloginfo('url'); ?>/members/">Our Members</a> | |
</div> | |
<div id="content"> | |
<h1>Our members</h1> | |
<?php | |
if ( have_posts() ) { | |
$post = $posts[0]; // Hack. Set $post so that the_date() works. | |
// Output posts | |
echo '<ol class="posts">'; | |
global $wp_query; | |
$query =& $wp_query; | |
echo '<p>$query->found_posts = '.$query->found_posts.'</p>'; | |
echo '<p>$query->query_vars["posts_per_page"] = '.$query->query_vars["posts_per_page"].'</p>'; | |
echo '<p>$query->max_num_pages = '.$query->max_num_pages.'</p>'; | |
while ( have_posts() ) { | |
the_post(); | |
get_template_part( 'members-in-loop' ); | |
} | |
// More? | |
slt_more_posts_link( | |
'/our-members/', //$base_url | |
'member', //$post_type | |
__( "Older posts", SLT_THEME_SHORTNAME ), //$older_label | |
__( "Newer posts", SLT_THEME_SHORTNAME ), //$newer_label | |
'', //$taxonomy | |
'', //$term_id | |
50, //$posts_per_page | |
'' //$show_more_label | |
); | |
echo '</ol>'; | |
do_action('wp_ajax_nopriv_slt_get_more_posts'); | |
} else { | |
printf( __( 'Sorry, there are currently no %s posts under this theme.', SLT_THEME_SHORTNAME ), $slt_post_type_object->labels->singular_name ); | |
} | |
?> | |
</div><!-- /#content --> | |
<?php get_sidebar(); ?> | |
<?php get_footer(); ?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Output the link to pull in more posts | |
// Designed for jQuery to attach AJAX too, with basic fallback functionality | |
// Currently only works with one list of posts per page | |
if ( ! function_exists( 'slt_more_posts_link' ) ) { | |
function slt_more_posts_link( $base_url = '/', $post_type = 'post', $older_label = null, $newer_label = null, $taxonomy = '', $term_id = 0, $posts_per_page = null, $show_more_label = null, $custom_vars = array(), &$query = null, $exclude = array() ) { | |
if ( ! $query ) { | |
global $wp_query; | |
$query =& $wp_query; | |
} | |
if ( $older_label == null ) | |
$older_label = __( "Older posts", 'slt-custom' ); | |
if ( $newer_label == null ) | |
$newer_label = __( "Newer posts", 'slt-custom' ); | |
if ( $show_more_label == null ) | |
$show_more_label = __( "Show more posts", 'slt-custom' ); | |
if ( $posts_per_page == null ) | |
$posts_per_page = get_option( 'posts_per_page' ); | |
$page = $query->query_vars["paged"]; | |
if ( ! $page ) | |
$page = 1; | |
$qs = $_SERVER["QUERY_STRING"] ? "?" . $_SERVER["QUERY_STRING"] : ""; | |
// Only necessary if there's more posts than posts per page | |
if ( $query->found_posts > $query->query_vars["posts_per_page"] ) { | |
if ( $page < $query->max_num_pages ) | |
echo '<li id="older-posts" class="more-posts"><a href="' . esc_attr( $base_url . 'page/' . ( $page + 1 ) . '/' . $qs ) . '">' . wp_kses( $older_label, array() ) . '</a></li>'; | |
if ( $page > 1 ) | |
echo '<li id="newer-posts" class="more-posts"><a href="' . esc_attr( $base_url . 'page/' . ( $page - 1 ) . '/' . $qs ) . '">' . wp_kses( $newer_label, array() ) . '</a></li>'; | |
?> | |
<script type="text/javascript">/* <![CDATA[ */ | |
jQuery( 'li#older-posts a' ).text( '<?php echo wp_kses( $show_more_label, array() ); ?>' ); | |
// Set vars for AJAX | |
var slt_ajax_more_data = { | |
'post_type': '<?php echo $post_type; ?>', | |
'taxonomy': '<?php echo $taxonomy; ?>', | |
'term_id': '<?php echo $term_id; ?>', | |
'found_posts': '<?php echo $query->found_posts; ?>', | |
'posts_per_page': '<?php echo $posts_per_page; ?>', | |
'post__not_in': '<?php echo implode( ",", $exclude ); ?>', | |
'is_vars': { | |
<?php | |
// Pass through conditional variables from query | |
$is_vars = array( 'archive', 'date', 'year', 'month', 'day', 'time', 'author', 'category', 'tag', 'tax', 'search', 'home', 'posts_page', 'post_type_archive' ); | |
$array_query = (array) $query; | |
foreach ( $is_vars as $is_var ) { | |
echo "'$is_var': " . ( $array_query['is_' . $is_var] ? 'true' : 'false' ); | |
if ( $is_var != $is_vars[ count( $is_vars ) -1 ] ) | |
echo ','; | |
} | |
?> | |
}<?php | |
if ( ! empty( $custom_vars) ) { | |
echo ",\n"; | |
echo "'custom_vars': {\n"; | |
foreach ( $custom_vars as $custom_var_key => $custom_var_value ) | |
echo "'" . esc_js( $custom_var_key ) . "': '" . esc_js( $custom_var_value ) . "',\n"; | |
echo "}"; | |
} | |
?> | |
}; | |
/* ]]> */</script> | |
<?php | |
} | |
} | |
} | |
// AJAX wrapper to get more posts | |
if ( ! function_exists( 'slt_get_more_posts_ajax' ) ) { | |
add_action( 'wp_ajax_nopriv_slt_get_more_posts', 'slt_get_more_posts_ajax' ); | |
function slt_get_more_posts_ajax() { | |
// Initialize | |
ob_end_clean(); | |
global $slt_loop; | |
$args = array( | |
'post_type' => $_REQUEST['post_type'], | |
'posts_per_page' => $_REQUEST['posts_per_page'], | |
'offset' => $_REQUEST['offset'], | |
'post__not_in' => explode( ',', $_REQUEST['post__not_in'] ), | |
'post_status' => 'publish' | |
); | |
if ( $_REQUEST['taxonomy'] && $_REQUEST['term_id'] ) { | |
$args['tax_query'] = array( array( | |
'taxonomy' => $_POST['taxonomy'], | |
'field' => 'id', | |
'terms' => $_POST['term_id'] | |
)); | |
} | |
// Get posts | |
$slt_loop = new WP_Query( $args ); | |
//mail( "[email protected]", "more posts query", print_r( slt_debug_query($slt_loop,false), true ) ); | |
//mail( "[email protected]", "more posts query", print_r( $slt_loop, true ) ); | |
// Force any conditional query variables | |
global $wp_query; | |
foreach ( $_REQUEST as $key => $value ) { | |
if ( strlen( $key ) > 3 && substr( $key, 0, 3 ) == 'is_' ) | |
$wp_query->$key = $value; | |
} | |
// Build output | |
while ( $slt_loop->have_posts() ) { | |
$slt_loop->the_post(); | |
get_template_part( 'post-in-loop' ); | |
} | |
wp_reset_query(); | |
exit( 0 ); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment