Assume the following code in one WordPress plugin is some private info in one page: function show( $id ) { return "ID: $id Click Me"; } echo show(35); With LSCWP ESI API, it can be changed to this: ==== Solution One ==== function show( $id, $from_esi = false ) { // To make sure it is the original call if ( ! $from_esi ) { // To make sure LSCWP ESI is on if( method_exists( 'LiteSpeed_Cache_API', 'esi_enabled' ) && LiteSpeed_Cache_API::esi_enabled() ) { // To make sure is using the compatible API version if ( method_exists( 'LiteSpeed_Cache_API', 'v' ) && LiteSpeed_Cache_API::v( '1.3' ) ) { $params = array( 'id' => $id ) ;// If you have any parameters want to pass // Let's turn this block to ESI by returning directly return LiteSpeed_Cache_API::esi_url( 'my_plugin_esi', 'My Plugin Name', $params ) ; } } } return "ID: $id Click Me"; } echo show(35); And then, in your main process, hook the ESI call to the real content: if ( method_exists( 'LiteSpeed_Cache_API', 'esi_enabled' ) && LiteSpeed_Cache_API::esi_enabled() ) { LiteSpeed_Cache_API::hook_tpl_esi('my_plugin_esi', 'hook_esi' ); } function hook_esi( $params ) { $id = $params[ 'id' ] ; echo show( $id, true ) ; exit; } ==== Solution Two ==== Assuming ESI is ON and LSCWP is up-to-date Separated `show()` function to make it easier to understand: LiteSpeed_Cache_API::hook_tpl_esi('my_plugin_esi', 'hook_esi' ); function hook_esi( $param ) { $id = $params[ 'id' ] ; echo "ID: $id Click Me"; exit; } function show( $id ) { $params = array( 'id' => $id ) ; return LiteSpeed_Cache_API::esi_url( 'my_plugin_esi', 'My Plugin Name', $params ) ; } echo show(35); ===== More Sample Codes ===== [[litespeed_wiki:cache:lscwp:esi_replace|Plugin Example: How to use ESI API in plugin "Caldera Form" ?]] [[litespeed_wiki:cache:lscwp:esi_nonce|Plugin Example: How to use ESI API to replace WordPress nonce in plugin "Visual Composer" ?]]