How to use a shortcode to display an external file in your posts

The following code shows how to create a shortcode which will load and display an external file.

This can be used anywhere shortcodes are supported – for example posts, pages, widget areas.

In this example we’ll be using http://example.com/file.txt

It uses the built-in WordPress functions to safely retrieve the file (wp_remote_get) and display it (esc_html).

How do I use this?

Copy the code below into either your theme’s functions.php file – or into your custom functions plugin.

Insert the shortcode where you want the external file displayed

[remote_show_file url=”http://example.com/file.txt”]

View the page – and the external file should be displayed.

The code

/*
 * Load external url in shortcode
 * Gravity Geek - www.gravitygeek.com
 * 11/05/2019
 */

function gg_remote_show_file( $atts ) {
	
	// normalize attribute keys, lowercase
	$atts = array_change_key_case( ( array )$atts, CASE_LOWER );

	// override default attributes with user attributes
	$shortcode_attributes = shortcode_atts(
		array(
			'url' => '', // default url
		), $atts );
		
	$url = esc_attr( $shortcode_attributes['url'] );

	if ( $url ) { // if we have a url
		// request remote url
		$request = wp_remote_get( $url, array( 'timeout' => 120 ) );

		// if there is an error - return nothing
		if( is_wp_error( $request ) ) {
			return;
		}
		
		// get response body
		$data = wp_remote_retrieve_body( $request );

		if( $data !== false ) { // if we have a response body
			return esc_html( $data ); // return content
		}
	}
}
 
add_shortcode( 'remote_show_file', 'gg_remote_show_file' );

Was this article helpful?

Related Articles