Last active
August 29, 2015 14:13
-
-
Save salcode/26695ceba0f63be1e6a6 to your computer and use it in GitHub Desktop.
Example Shortcode that displays query results and caches with transient
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 | |
// Shortcode to display query results of CPT query | |
// with transient caching | |
add_shortcode( 'query_results', 'fe_query_results' ); | |
add_action( 'save_post', 'fe_query_results_delete_transient' ); | |
function fe_query_results( $atts ) { | |
global $post; | |
$transient_key = 'fe_query_results_transient_key'; | |
$transient_time = 24 * HOUR_IN_SECONDS; | |
// return transient if it exists | |
if ( false !== ( $output = get_transient( $transient_key ) ) ) { | |
return $output; | |
} | |
$output = ''; | |
$args = array( | |
'post_type' => 'post', | |
'order' => 'ASC', | |
'orderby' => 'menu_order', | |
'posts_per_page' => 200, | |
// re-enable if you need pagination | |
'no_found_rows' => true, | |
// re-enable if you use post meta in your output | |
'update_post_meta_cache'=> false, | |
// re-enable if you use terms in your output | |
'update_post_term_cache'=> false, | |
); | |
$fe_query= new WP_Query( $args ); | |
if ( $fe_query->have_posts() ) { | |
$output .= '<ul class="fe-query-results-shortcode-output">'; | |
while ( $fe_query->have_posts() ) { | |
$fe_query->the_post(); | |
$title = get_the_title(); | |
$link = get_the_permalink(); | |
$output .= "<li><a href=\"{$link}\">{$title}</a></li>"; | |
} | |
$output .= '</ul>'; | |
} else { | |
$output .= '<div class="fe-query-results-shortcode-output-none">No results were found</div>'; | |
} | |
wp_reset_postdata(); | |
set_transient( $transient_key, $output, $transient_time ); | |
return $output; | |
} | |
function fe_query_results_delete_transient() { | |
global $post; | |
if ( $post && 'post' === $post->post_type ) { | |
delete_transient( 'fe_query_results_transient_key' ); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment