summaryrefslogtreecommitdiff
path: root/inc/compatibility/class-astra-web-stories.php
blob: e0d4b59b11c015b4c3ce8a0d7714f663fdc17fda (plain) (blame)
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
89
90
91
92
93
94
95
96
97
<?php
/**
 * Web Stories Compatibility File.
 *
 * @link https://wp.stories.google/
 *
 * @package Astra
 */

// If plugin - 'Google\Web_Stories' not exist then return.
if ( ! defined( 'WEBSTORIES_VERSION' ) ) {
	return;
}

/**
 * Astra Web_Stories Compatibility
 *
 * @since 3.2.0
 */
class Astra_Web_Stories {

	/**
	 * Constructor
	 *
	 * @since 3.2.0
	 * @return void
	 */
	public function __construct() {
		add_action( 'after_setup_theme', array( $this, 'web_stories_setup' ) );
		add_action( 'astra_body_top', array( $this, 'web_stories_embed' ) );
		add_filter( 'astra_dynamic_theme_css', array( $this, 'web_stories_css' ) );
	}

	/**
	 * Add theme support for Web Stories.
	 *
	 * @since 3.2.0
	 * @return void
	 */
	public function web_stories_setup() {
		add_theme_support( 'web-stories' );
	}

	/**
	 * Custom render function for Web Stories Embedding.
	 *
	 * @since 3.2.0
	 * @return void
	 */
	public function web_stories_embed() {
		if ( ! function_exists( '\Google\Web_Stories\render_theme_stories' ) ) {
			return;
		}

		// Embed web stories above header with pre-configured customizer settings.
		\Google\Web_Stories\render_theme_stories();
	}

	/**
	 * Add dynamic CSS for the webstories.
	 *
	 * @since 3.2.0
	 *
	 * @param  string $dynamic_css          Astra Dynamic CSS.
	 * @param  string $dynamic_css_filtered Astra Dynamic CSS Filters.
	 *
	 * @return String Generated dynamic CSS for Heading Colors.
	 */
	public function web_stories_css( $dynamic_css, $dynamic_css_filtered = '' ) {
		// Using function check instead of class as there can be changes in the web stories plugin later, see 1.7.1 release https://github.com/google/web-stories-wp/pull/7266/files.
		if ( ! function_exists( '\Google\Web_Stories\render_theme_stories' ) ) {
			return $dynamic_css;
		}

		$options = get_option( 'web_stories_customizer_settings' );

		// bail if web stories are not enabled on the frontend.
		if ( empty( $options['show_stories'] ) || true !== $options['show_stories'] ) {
			return $dynamic_css;
		}

		$stories_css_array = array(
			'.web-stories-list.web-stories-list--customizer.is-view-type-circles' => array(
				'border-bottom' => '1px solid #ccc',
				'padding'       => '15px 0',
				'margin-bottom' => '0',
			),
		);

		$dynamic_css .= astra_parse_css( $stories_css_array );

		return $dynamic_css;
	}

}

new Astra_Web_Stories();