consuming & embedding external content in wordpress
TRANSCRIPT
![Page 1: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/1.jpg)
Consuming & embedding external content
Akshay Raje
![Page 2: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/2.jpg)
@akshayrajeprofiles.wordpress.org/akshay_raje
WordPressjQueryHuman Resources
Biking
PHPJavaScript
![Page 3: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/3.jpg)
$topics = array( 'HTTP requests in PHP/WordPress', 'Helper functions: GET, POST, HEAD', 'Request arguments', 'Caching: Object Caching and Transients API', 'Parsing', 'How WP Web Scraper helps');
if( in_array( $question, $topics ) !== true ) var_dump( $question );
Next 25 minutes:
@akshayraje
![Page 4: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/4.jpg)
0: HTTP Requests in PHP/WordPress
@akshayraje
![Page 5: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/5.jpg)
Multiple Transports, Functions, Environments
cURL
file_get_contents
fsockopenShared
Dedicated
VPS
IaaS
PaaS
fopenhttp
streams
![Page 6: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/6.jpg)
Before AfterWord2
Press7
• Design & support own implementation
• Branch code for multiple transport implementations
• Duplication of code across plugins
• Standard API for core and plugins
• Wider environment support with fallbacks
• OO and helper Functional
@akshayraje
![Page 7: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/7.jpg)
1: Helper functions: GET, POST, HEAD
@akshayraje
![Page 8: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/8.jpg)
wp_remote_get() Retrieves a URL using the GET HTTP method.
wp_remote_post() Retrieves a URL using the POST HTTP method.
wp_remote_head() Retrieves a URL using the HEAD HTTP method.
wp_remote_request() Retrieves a URL using either the default GET or a custom HTTP method that you specify.
WP_HTTP Helper functions
@akshayraje
![Page 9: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/9.jpg)
$url (string) (required) Site URL to retrieve.Default: None
$args (array) (optional) Override the defaults.Default: array()
WP_HTTP Helper functions
Parameters
Return Values(WP_Error|array) The response or WP_Error on failure.
@akshayraje
![Page 10: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/10.jpg)
$response = wp_remote_get( 'http://httpbin.org/html' );
if ( is_wp_error( $response ) ) {echo 'Something went wrong: ' . $response-
>get_error_message();} else {
print_r( $response );}
<?code
@akshayraje
![Page 11: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/11.jpg)
@akshayraje
<?output
@akshayraje
![Page 12: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/12.jpg)
2: Request arguments
@akshayraje
![Page 13: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/13.jpg)
@akshayraje
Default $args
![Page 14: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/14.jpg)
@akshayraje
$args = array('timeout' => 10,'user-agent' => 'My-Bot','body' => array( 'username' => 'bob', 'password' => '1234xyz' )
); $response = wp_remote_post( 'http://httpbin.org/post', $args );
if ( is_wp_error( $response ) ) {echo 'Something went wrong: ' . $response->get_error_message();
} else {print_r( $response );
}
<?code POST example
![Page 15: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/15.jpg)
3: Caching: Object Cache and Transients API
@akshayraje
![Page 16: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/16.jpg)
Why Cache?
API Rate Limits
Blocking requestsOutgoing bandwidth
Avoid abusing web service
Page Load
No change in contentPaaS Rate Limits
![Page 17: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/17.jpg)
What Cache?
Object Cache
Page Cache
@akshayraje
![Page 18: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/18.jpg)
What Cache?
Object CachePersistent
Page Cache
@akshayraje
![Page 19: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/19.jpg)
Object CachePersistent
W3 Total CacheWP Super CacheQuick CacheHyper CacheWP Fastest Cache
DiskAPC
eAcceleratorXCache
WinCacheMemcached
@akshayraje
![Page 20: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/20.jpg)
Object CachePersistent
Transients API ‘guarantees’
@akshayraje
![Page 21: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/21.jpg)
Use the Transients API instead of wp_cache functions if you need to guarantee that your data will be cached. If persistent caching is configured, then the transients functions will use the wp_cache functions. However if persistent caching has not been enabled, then the data will instead be cached to the options table.
Source: http://codex.wordpress.org/Class_Reference/WP_Object_Cache
“
@akshayraje
![Page 22: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/22.jpg)
@akshayraje
$transient (string) (required) Unique transient name. 45 characters or less in length.Default: None
Transients functions
get_transient( $transient )
Pretty much like get_option( $option )
![Page 23: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/23.jpg)
@akshayraje
Transients functions
set_transient($transient, $value, $expiration)
Pretty much like set_option( $option, $value )
$transient (string) (required) Unique transient name. 45 characters or less in length.Default: None
$value (mixed) (required) Transient value. Default: None
$expiration (int) (optional) Time until expiration in seconds from now, or 0 for never expires. Default: 0.
![Page 24: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/24.jpg)
@akshayraje
// Get any existing copy of transient data if available
if ( false === ( $response = get_transient( 'special_wp_remote_get' ) ) ) {
$response = wp_remote_get( 'http://httpbin.org/html' );
if ( !is_wp_error( $response ) ) {set_transient( 'special_wp_remote_get', $response, 12 *
HOUR_IN_SECONDS );}
}
// Use $response like you would have normally...
<?code Cached wp_remote_get
![Page 25: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/25.jpg)
4: Parsing
@akshayraje
![Page 26: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/26.jpg)
<?output
@akshayraje
![Page 27: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/27.jpg)
wp_remote_retrieve_body() Retrieves just the body from the response.
wp_remote_retrieve_header() Gives you a single HTTP header based on name from the response.
wp_remote_retrieve_headers() Returns all of the HTTP headers in an array for processing.
wp_remote_retrieve_response_code() Gives you the number for the HTTP response. This should be 200, but could be 4xx or even 3xx on failure.
wp_remote_retrieve_response_message() Returns the response message based on the response code.
WP_HTTP Helper functions
@akshayraje
![Page 28: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/28.jpg)
JSON Native Objectjson_decode
XML XPath DOMDocument class
HTML XPathDOMDocument class
Parsing
@akshayraje
![Page 29: Consuming & embedding external content in WordPress](https://reader036.vdocuments.mx/reader036/viewer/2022081519/55cd2d74bb61ebf9038b47b7/html5/thumbnails/29.jpg)
5: WP Web Scraper
wp-ws.networdpress.org/plugins/wp-web-scrapper
@akshayraje