public
Last active

WP_Rewrite endpoints demo

  • Download Gist
endpoints.php
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
<?php
/*
Plugin Name: WP_Rewrite endpoints demo
Description: A plugin giving example usage of the WP_Rewrite endpoint API
Plugin URI: http://make.wordpress.org/plugins/2012/06/07/rewrite-endpoints-api/
Author: Jon Cave
Author URI: http://joncave.co.uk/
*/
 
function makeplugins_endpoints_add_endpoint() {
// register a "json" endpoint to be applied to posts and pages
add_rewrite_endpoint( 'json', EP_PERMALINK | EP_PAGES );
}
add_action( 'init', 'makeplugins_endpoints_add_endpoint' );
 
function makeplugins_endpoints_template_redirect() {
global $wp_query;
 
// if this is not a request for json or it's not a singular object then bail
if ( ! isset( $wp_query->query_vars['json'] ) || ! is_singular() )
return;
 
// output some JSON (normally you might include a template file here)
makeplugins_endpoints_do_json();
exit;
}
add_action( 'template_redirect', 'makeplugins_endpoints_template_redirect' );
 
function makeplugins_endpoints_do_json() {
header( 'Content-Type: application/json' );
 
$post = get_queried_object();
echo json_encode( $post );
}
 
function makeplugins_endpoints_activate() {
// ensure our endpoint is added before flushing rewrite rules
makeplugins_endpoints_add_endpoint();
// flush rewrite rules - only do this on activation as anything more frequent is bad!
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'makeplugins_endpoints_activate' );
 
function makeplugins_endpoints_deactivate() {
// flush rules on deactivate as well so they're not left hanging around uselessly
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'makeplugins_endpoints_deactivate' );

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.