When I was learning WordPress, the one file that I created that was the most helpful was my test.php file. This file proved extremely valuable. Even now, everyone once in a while, I want to write a vanilla function for a particular filter or action and see what the parameters contain. It was a way that I could load the WordPress environment (and optionally the admin environment) and test various default functions, filters, and actions. However, I don't want to navigate to a specific page or anything. I want something quick, easy and fast. So, I have this file that I keep in my development environment called test.php.
NEVER use this file in a production environment.
This file contains the following:
- Loads the WordPress Environment
- Contains debugging functions
wps_printr()andwps_die() - Optionally Loads the Admin Environment
- Optionally loads user functions
- Optionally loads the Plugins API
To use this file, create a file called test.php at the root of your local site (this is the same place where your wp-config.php [unless you have moved this file] and wp-load.php files are located. The file should be located and reachable by http://domain.dev/test.php.
Debugging Functions
The debugging functions allow you to pretty print variable values to the screen.
| //** Debugging **// | |
| if ( ! function_exists( 'wps_printr' ) ) { | |
| /** | |
| * Pretty prints variable (array) value. | |
| * @author Travis Smith <[email protected]> | |
| * | |
| * @param $args Variable to be outputted. | |
| * @param string $name Title to output before the variable output. | |
| */ | |
| function wps_printr( $args, $name = '' ) { | |
| if ( apply_filters( 'wps_debug_off', false ) ) { | |
| return; | |
| } | |
| if ( '' !== $name && false !== $name ) { | |
| printf( '<strong>%s</strong><br/>', $name ); | |
| } | |
| if ( is_array( $args ) ) { | |
| printf( '<pre>%s</pre>', htmlspecialchars( print_r( $args, true ) ) ); | |
| } else { | |
| var_dump( $args ); | |
| } | |
| } | |
| } | |
| if ( function_exists( 'wps_printr' ) && ! function_exists( 'wps_die' ) ) { | |
| /** | |
| * Pretty prints variable (array) value & dies. | |
| * @author Travis Smith <[email protected]> | |
| * | |
| * @param $args Variable to be outputted. | |
| * @param string $name Title to output before the variable output. | |
| */ | |
| function wps_die( $args, $name = '' ) { | |
| if ( apply_filters( 'wps_debug_off', false ) ) { | |
| return; | |
| } | |
| wp_die( wps_printr( $args, $name ) ); | |
| } | |
| } |
Optionally Load the Admin Environment
All you need to do is uncomment the line with wps_load_admin().
| //** Admin **// | |
| /** | |
| * Pluggable function, prevent redirect to admin pages | |
| * @author Travis Smith <[email protected]> | |
| */ | |
| function auth_redirect() { | |
| $loginusername = 'admin'; | |
| $user = get_user_by( 'login', $loginusername ); | |
| wp_set_current_user( $user->ID, $loginusername ); | |
| wp_set_auth_cookie( $user->ID ); | |
| } | |
| /** | |
| * Load the WordPress Admin Environment | |
| * @author Travis Smith <[email protected]> | |
| */ | |
| function wps_load_admin() { | |
| // Select either Network or User Admin | |
| // define( 'WP_NETWORK_ADMIN', TRUE ); // Used in is_network_admin() | |
| define( 'WP_USER_ADMIN', TRUE ); // Used in is_user_admin() | |
| define( 'WP_BLOG_ADMIN', TRUE ); // Used in is_blog_admin() | |
| define( 'WP_ADMIN', TRUE ); // Used in is_admin() | |
| // Required for admin.php & prevent errors | |
| global $wp_db_version, $_wp_submenu_nopriv; | |
| require( './wp-admin/admin.php' ); | |
| echo '<h1>Admin Loaded</h1>'; | |
| } | |
| // Load Admin | |
| //wps_load_admin(); |
Optionally Load the User Functions
| // User functions | |
| //require( './wp-admin/includes/user.php' ); |
All you need to do is uncomment the line with
require( './wp-admin/includes/user.php' );.
Optionally Load the Plugins API
| // WordPress Plugins API | |
| //require( './wp-admin/includes/plugin_install.php' ); | |
| // Endpoints | |
| //https://api.wordpress.org/plugins/info/1.0/{slug} | |
| //https://api.wordpress.org/plugins/info/1.0/{slug}.json | |
| //https://api.wordpress.org/plugins/update-check/1.0/ | |
| //https://api.wordpress.org/plugins/update-check/1.1/ | |
| // Importers | |
| //https://api.wordpress.org/core/importers/1.0/ (serialized) | |
| //https://api.wordpress.org/core/importers/1.1/ (JSON) | |
| //Checksum | |
| //https://api.wordpress.org/core/checksums/1.0/?version={wp-version}&locale=en_US (JSON) |
All you need to do is uncomment the line with
require( './wp-admin/includes/plugin_install.php' );.
Full Code
| <?php | |
| // Set date, just in case | |
| date_default_timezone_set( 'America/New_York' ); | |
| // Load the WordPress Environment | |
| define( 'WP_DEBUG', TRUE ); // Set to FALSE to remove DEBUG MODE | |
| require( './wp-load.php' ); | |
| // User functions | |
| //require( './wp-admin/includes/user.php' ); | |
| //** Admin **// | |
| /** | |
| * Pluggable function, prevent redirect to admin pages | |
| * @author Travis Smith <[email protected]> | |
| */ | |
| function auth_redirect() { | |
| $loginusername = 'admin'; | |
| $user = get_user_by( 'login', $loginusername ); | |
| wp_set_current_user( $user->ID, $loginusername ); | |
| wp_set_auth_cookie( $user->ID ); | |
| } | |
| /** | |
| * Load the WordPress Admin Environment | |
| * @author Travis Smith <[email protected]> | |
| */ | |
| function wps_load_admin() { | |
| // Select either Network or User Admin | |
| // define( 'WP_NETWORK_ADMIN', TRUE ); // Used in is_network_admin() | |
| define( 'WP_USER_ADMIN', TRUE ); // Used in is_user_admin() | |
| define( 'WP_BLOG_ADMIN', TRUE ); // Used in is_blog_admin() | |
| define( 'WP_ADMIN', TRUE ); // Used in is_admin() | |
| // Required for admin.php & prevent errors | |
| global $wp_db_version, $_wp_submenu_nopriv; | |
| require( './wp-admin/admin.php' ); | |
| echo '<h1>Admin Loaded</h1>'; | |
| } | |
| // Load Admin | |
| //wps_load_admin(); | |
| // WordPress Plugins API | |
| //require( './wp-admin/includes/plugin_install.php' ); | |
| // Endpoints | |
| //https://api.wordpress.org/plugins/info/1.0/{slug} | |
| //https://api.wordpress.org/plugins/info/1.0/{slug}.json | |
| //https://api.wordpress.org/plugins/update-check/1.0/ | |
| //https://api.wordpress.org/plugins/update-check/1.1/ | |
| // Importers | |
| //https://api.wordpress.org/core/importers/1.0/ (serialized) | |
| //https://api.wordpress.org/core/importers/1.1/ (JSON) | |
| //Checksum | |
| //https://api.wordpress.org/core/checksums/1.0/?version={wp-version}&locale=en_US (JSON) | |
| //** Debugging **// | |
| if ( ! function_exists( 'wps_printr' ) ) { | |
| /** | |
| * Pretty prints variable (array) value. | |
| * @author Travis Smith <[email protected]> | |
| * | |
| * @param $args Variable to be outputted. | |
| * @param string $name Title to output before the variable output. | |
| */ | |
| function wps_printr( $args, $name = '' ) { | |
| if ( apply_filters( 'wps_debug_off', false ) ) { | |
| return; | |
| } | |
| if ( '' !== $name && false !== $name ) { | |
| printf( '<strong>%s</strong><br/>', $name ); | |
| } | |
| if ( is_array( $args ) ) { | |
| printf( '<pre>%s</pre>', htmlspecialchars( print_r( $args, true ) ) ); | |
| } else { | |
| var_dump( $args ); | |
| } | |
| } | |
| } | |
| if ( function_exists( 'wps_printr' ) && ! function_exists( 'wps_die' ) ) { | |
| /** | |
| * Pretty prints variable (array) value & dies. | |
| * @author Travis Smith <[email protected]> | |
| * | |
| * @param $args Variable to be outputted. | |
| * @param string $name Title to output before the variable output. | |
| */ | |
| function wps_die( $args, $name = '' ) { | |
| if ( apply_filters( 'wps_debug_off', false ) ) { | |
| return; | |
| } | |
| wp_die( wps_printr( $args, $name ) ); | |
| } | |
| } | |
| /** | |
| * Plugins API Remote Post Example | |
| * | |
| * @author Travis Smith <[email protected]> | |
| */ | |
| function wps_plugins_api_remote_post() { | |
| $args = (object) array( 'slug' => 'custom-favicon' ); | |
| $request = array( 'action' => 'plugin_information', 'timeout' => 15, 'request' => serialize( $args ) ); | |
| $url = 'http://api.wordpress.org/plugins/info/1.0/'; | |
| $response = wp_remote_post( $url, array( 'body' => $request ) ); | |
| $plugin_info = unserialize( $response['body'] ); | |
| wps_printr( $plugin_info, 'plugin_info' ); | |
| } | |
| /** | |
| * Helper function to output plugins_api() | |
| * | |
| * @author Travis Smith <[email protected]> | |
| * @param $result array Array of plugins_api() result. | |
| */ | |
| function wps_output_result( $result ) { | |
| /** Check for Errors & Display the results */ | |
| if ( is_wp_error( $result ) ) { | |
| wps_printr( $result->get_error_message() ); | |
| } else { | |
| wps_printr( $result ); | |
| } | |
| } | |
| /** | |
| * Plugins API using plugins_api(): Get specific plugin information | |
| * | |
| * @author Travis Smith <[email protected]> | |
| */ | |
| function wps_plugins_api_plugin_information() { | |
| $call_api = plugins_api( 'plugin_information', array( 'slug' => 'custom-favicon' ) ); | |
| wps_output_result( $call_api ); | |
| } | |
| /** | |
| * Plugins API using plugins_api(): Get plugins with tag | |
| * | |
| * @author Travis Smith <[email protected]> | |
| */ | |
| function wps_plugins_api_hot_tags() { | |
| /** Prepare our query */ | |
| $call_api = plugins_api( 'hot_tags', | |
| array( | |
| 'number' => '50', | |
| ) | |
| ); | |
| wps_output_result( $call_api ); | |
| } | |
| /** | |
| * Plugins API using plugins_api(): Search plugins | |
| * | |
| * @author Travis Smith <[email protected]> | |
| */ | |
| function wps_plugins_api_query_plugins() { | |
| $call_api = plugins_api( 'query_plugins', | |
| array( | |
| 'browse' => 'top-rated', | |
| 'page' => '1', | |
| 'per_page' => '5', | |
| 'fields' => array( | |
| 'downloaded' => false, | |
| 'rating' => false, | |
| 'description' => false, | |
| 'short_description' => false, | |
| 'donate_link' => false, | |
| 'tags' => false, | |
| 'sections' => false, | |
| 'homepage' => false, | |
| 'added' => false, | |
| 'last_updated' => false, | |
| 'compatibility' => false, | |
| 'tested' => false, | |
| 'requires' => false, | |
| 'downloadlink' => true, | |
| ) | |
| ) | |
| ); | |
| wps_output_result( $call_api ); | |
| } | |
| // Execute plugins_api() functions | |
| //wps_plugins_api_remote_post(); | |
| //wps_plugins_api_hot_tags(); | |
| //wps_plugins_api_query_plugins(); |


Leave a Reply