Remote Content Shortcode

Description

Use the [remote_content url="http://www.example.com"] shortcode to import remotely hosted content into your posts or page using cURL. Supports HTML GET and POST, BASIC authentication, HTML entity escaping/encoding, CSS selectors and element removal, regular expression replacements, and caching.

This shortcode will let you…

  • Display the contents of a document stored in Subversion or Git repository into a post where it can then be formatted using SyntaxHighlighter.
  • Quickly integrate content from other CMS systems, for example a company intranet.
  • Control access to protected data using WordPress’ permissions.
  • Select and remove DOM elements based on CSS selectors (like jQuery).
  • Find and replace text based on PHP regular expressions.
  • HTML encode the remote content.
  • Strip tags from the remote content.
  • Cache the remote content.

Usage

Attributes
[remote_content url=”http://www.example.com” method=”GET” timeout=”10″ userpwd=”username:password” htmlentities=”false” strip_tags=”false” decode_atts=”false” selector=”body” remove=”img” find=”~domain.com~” replace=”new-domain.com” cache=”true” cache_ttl=”3600″]

  • url
    • The url that you want to request.
  • method=[GET| POST ]
    • The HTTP request type, defaults to GET.
  • params="key=value, foo, bar"
    • The keys listed here will be parsed from the querystring and appended to the url. Separate keys by with commas. If the value is not found in the querystring the default value can be specified by placing it after an equals sign: parameter=default.
  • timeout=[ 0-9...10]
    • The request timeout in seconds if it can’t be fetched from the cache, defaults to 10 seconds.
  • userpwd=[**username:password **| post_meta | site_option | constant ]
    • The username and password to send for BASIC authentication. It is recommended to not set the username and password directly in the tag, as YOUR PASSWORD WILL BE PUBLICLY VISIBLE ON YOUR WEBSITE IF THIS PLUGIN IS DISABLED, and instead use one of the other options. By order of priority, if the value matches a post meta_key the meta_value is used, if it matches a site_option the option_value is used, and if it matches a constant the constant value is used, otherwise the string data is parsed as is. The format is username:password.
  • htmlentities=[false| true ]
    • If you want to HTML encode the content for display, set to true, defaults to false.
  • strip_tags=[false| true ]
    • strip all HTML tags from the response, defaults to false.
  • decode_atts=[false| true ]
    • The SyntaxHighlighter plugin will HTML encode your shortcode attributes, so attr="blah" becomes attr="blah". This fixes it to the intended value when set to true, defaults to false.
  • selector=[ CSS Selectors... ]
    • The CSS selector or comma separated list or selectors for the content you would like to display, for example div.main-content or div.this-class #this-id, defaults to the entire document.
  • remove=[ CSS Selectors... ]
    • The CSS selector or comma separated list or selectors for the content that you would like to remove from the content, for example h2.this-class or div#this-id, defaults to no replacement.
  • find=[ regex ]
    • Use a PHP regular expression to find content and replace it based on the replace attribute, for example ~http://([^\.]*?)\.example\.com~, defaults to disabled.
  • replace=[ regex ]
    • The replacement text to use with the results of the find regular expression, for example https://\\1.new-domain.com, defaults to empty string replacement.
  • cache=[true| false ]
    • Set to false to prevent the contents from being cached in the WP-Cache/WordPress transients, defaults to true for performance.
  • cache_ttl=[ 0-9...3600]
    • Set the number of seconds to cache the results, using 0 for “as long as possible”, defaults to 3600 seconds (one hour).

Shortcode Contents + POST
If there is any content within the shortcode tags, it is sent as part of the request to the remote server.

[remote_content url="http://www.example.com" method="POST"]
{ json: { example: some_data } }
[/remote_content]

Installation

  1. Download the plugin and extract to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Use the [remote_content url="example.com"] shortcode in your pages, posts, and custom post types.

FAQ

I’ve activated the Remote Content Shortcode plugin, but nothing happens

Ensure that the following requirements are met.
* Your server must allow outbound HTTP and outbound requests.
* The remote server must be accessible to the server where your site is hosted.
* Your authentication credentials must be set correctly to access password protected content.

If you have command line access to your server, the curl command is a good way to verify that your server can access the content so that it can be displayed via the shortcode.

Reviews

Awesome plugin

This plugin is absolutely great.

Many thanks to the developer for creating it, I’m loving it 🙂

Awesome Plugin

This plugin is awesome! Helped me save so much working time.
Thanks a lot to doublesharp!

Read all 4 reviews

Contributors & Developers

“Remote Content Shortcode” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.4.2

  • Add filters for third party modification of values.
    • remote_content_shortcode_url, arguments: $url
    • Modify the URL before it is fetched
    • remote_content_shortcode_postfields, arguments: $tag_content, $url
    • Modify the tag content before it is POSTed
    • remote_content_shortcode_ssl_verifyhost, arguments: false, $url
    • Verify host SSL certificates
    • remote_content_shortcode_ssl_verifypeer, arguments: false, $url
    • Verify peer SSL certificates
    • remote_content_shortcode_phpQuery, arguments: $response, $url, $selector, $remove
    • Modify response content before it is sent to phpQuery
    • remote_content_shortcode_return, arguments: $response, $url
    • Modify response before it is returned

1.4

  • Convert & to & in URLs to account for Visual/Text editor encoding.

1.3.3

  • Fix for multiple params attributes.

1.3.2

  • Fix for params attribute.

1.3.1

  • Add support for passing through querystring parameters.

1.3

  • Use double quotes in find/replace by using %QUOT% in its place, for example find="~ (src|href)=(%QUOT%|')?(/)?~" replace=" \\1=\\2http://www.example.com/"
  • Bug fix for regex/non-empty replace.

1.2

  • Support case insensitive true/false and GET/POST values.
  • Bug fix for remote content caching.

1.1

  • CSS selectors for filtering and removal.
  • Regular expression replacement support.
  • Support for strip_tags.
  • Added attribute to allow caching to be disabled.

1.0

Initial version.