PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 8.9.4
Jetpack – WP Security, Backup, Speed, & Growth v8.9.4
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 All 500 releases
jetpack / modules / shortcodes / pinterest.php
pinterest.php
65 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Pinterest embeds
4 *
5 * Based on "Board Widget" example here: http://business.pinterest.com/widget-builder/#code
6 *
7 * Example URL: https://pinterest.com/pin/129056345550241149/
8 * Second Example URL: https://uk.pinterest.com/annsawesomepins/travel/
9 *
10 * @package Jetpack
11 */
12
13 wp_embed_register_handler(
14 'pinterest',
15 '#'
16 . 'https?://'
17 . '(?:www\.)?'
18 . '(?:[a-z]{2}\.)?'
19 . 'pinterest\.[a-z.]+/'
20 . '([^/]+)'
21 . '(/[^/]+)?'
22 . '#',
23 'pinterest_embed_handler'
24 );
25
26 /**
27 * Callback to modify output of embedded Pinterest posts.
28 *
29 * @param array $matches Regex partial matches against the URL passed.
30 * @param array $attr Attributes received in embed response.
31 * @param array $url Requested URL to be embedded.
32 */
33 function pinterest_embed_handler( $matches, $attr, $url ) {
34 // Pinterest's JS handles making the embed.
35 $script_src = '//assets.pinterest.com/js/pinit.js';
36
37 wp_enqueue_script( 'pinterest-embed', $script_src, array(), JETPACK__VERSION, true );
38
39 $path = wp_parse_url( $url, PHP_URL_PATH );
40 if ( 0 === strpos( $path, '/pin/' ) ) {
41 $embed_type = 'embedPin';
42 } elseif ( preg_match( '#^/([^/]+)/?$#', $path ) ) {
43 $embed_type = 'embedUser';
44 } elseif ( preg_match( '#^/([^/]+)/([^/]+)/?$#', $path ) ) {
45 $embed_type = 'embedBoard';
46 } else {
47 if ( current_user_can( 'edit_posts' ) ) {
48 return __( 'Sorry, that Pinterest URL was not recognized.', 'jetpack' );
49 }
50 return;
51 }
52
53 $return = sprintf( '<a data-pin-do="%s" href="%s"></a>', esc_attr( $embed_type ), esc_url( $url ) );
54
55 // If we're generating an embed view for the WordPress Admin via ajax.
56 if ( doing_action( 'wp_ajax_parse-embed' ) ) {
57 $return .= sprintf(
58 '<script src="%s"></script>', // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript
59 esc_url( $script_src )
60 );
61 }
62
63 return $return;
64 }
65