1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<?php
/** * Class MC4WP_Form_AMP */ class MC4WP_Form_AMP {
/** * Hook! */ public function add_hooks() { add_filter( 'mc4wp_form_content', array( $this, 'add_response_templates' ), 10, 2 ); add_filter( 'mc4wp_form_element_attributes', array( $this, 'add_amp_request' ) ); add_filter( 'mc4wp_load_form_scripts', array( $this, 'suppress_scripts' ) ); }
/** * Add AMP templates for submit/success/error. * * @param string $content The form content. * @param MC4WP_Form $form The form object. * @return string Modified $content. */ public function add_response_templates( $content, $form ) { if ( ! function_exists( 'is_amp_endpoint' ) || ! is_amp_endpoint() ) { return $content; }
ob_start(); ?> <div submitting> <template type="amp-mustache"> <?php echo esc_html__( 'Submitting...', 'mailchimp-for-wp' ); ?> </template> </div> <div submit-success> <template type="amp-mustache"> <?php echo wp_kses( $form->get_message( 'subscribed' ), array( 'a' => array(), 'strong' => array(), 'em' => array(), ) ); ?> </template> </div> <div submit-error> <template type="amp-mustache"> {{message}} </template> </div> <?php $content .= ob_get_clean();
return $content; }
/** * Add 'action-xhr' to AMP forms. * * @param array $attributes Key-Value pairs of attributes output on form. * @return array Modified $attributes. */ public function add_amp_request( $attributes ) { if ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) { $attributes['action-xhr'] = get_rest_url( null, 'mc4wp/v1/form' ); }
return $attributes; }
/** * Suppress form scripts on AMP pages. * * @param bool $load_scripts Whether scripts should be loaded. * @return bool Modified $load_scripts. */ public function suppress_scripts( $load_scripts ) { if ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) { return false; }
return $load_scripts; } }
|