97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Kadence\AMP\Component class
 | |
|  *
 | |
|  * @package kadence
 | |
|  */
 | |
| 
 | |
| namespace Kadence\AMP;
 | |
| 
 | |
| use Kadence\Component_Interface;
 | |
| use Kadence\Templating_Component_Interface;
 | |
| use function add_action;
 | |
| use function add_theme_support;
 | |
| use function get_theme_support;
 | |
| 
 | |
| /**
 | |
|  * Class for managing AMP support.
 | |
|  *
 | |
|  * Exposes template tags:
 | |
|  * * `kadence()->is_amp()`
 | |
|  * * `kadence()->using_amp_live_list_comments()`
 | |
|  *
 | |
|  * @link https://wordpress.org/plugins/amp/
 | |
|  */
 | |
| class Component implements Component_Interface, Templating_Component_Interface {
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the unique identifier for the theme component.
 | |
| 	 *
 | |
| 	 * @return string Component slug.
 | |
| 	 */
 | |
| 	public function get_slug() : string {
 | |
| 		return 'amp';
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Adds the action and filter hooks to integrate with WordPress.
 | |
| 	 */
 | |
| 	public function initialize() {
 | |
| 		add_action( 'after_setup_theme', array( $this, 'action_add_amp_support' ) );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets template tags to expose as methods on the Template_Tags class instance, accessible through `kadence()`.
 | |
| 	 *
 | |
| 	 * @return array Associative array of $method_name => $callback_info pairs. Each $callback_info must either be
 | |
| 	 *               a callable or an array with key 'callable'. This approach is used to reserve the possibility of
 | |
| 	 *               adding support for further arguments in the future.
 | |
| 	 */
 | |
| 	public function template_tags() : array {
 | |
| 		return array(
 | |
| 			'is_amp'                       => array( $this, 'is_amp' ),
 | |
| 			'using_amp_live_list_comments' => array( $this, 'using_amp_live_list_comments' ),
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Adds theme support for AMP.
 | |
| 	 *
 | |
| 	 * From here you can control how the plugin, when activated, impacts the the theme.
 | |
| 	 */
 | |
| 	public function action_add_amp_support() {
 | |
| 		add_theme_support(
 | |
| 			'amp',
 | |
| 			array(
 | |
| 				'comments_live_list' => true,
 | |
| 			)
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Determines whether this is an AMP response.
 | |
| 	 *
 | |
| 	 * Note that this must only be called after the parse_query action.
 | |
| 	 *
 | |
| 	 * @return bool Whether the AMP plugin is active and the current request is for an AMP endpoint.
 | |
| 	 */
 | |
| 	public function is_amp() : bool {
 | |
| 		return function_exists( 'is_amp_endpoint' ) && \is_amp_endpoint();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Determines whether amp-live-list should be used for the comment list.
 | |
| 	 *
 | |
| 	 * @return bool Whether to use amp-live-list.
 | |
| 	 */
 | |
| 	public function using_amp_live_list_comments() : bool {
 | |
| 		if ( ! $this->is_amp() ) {
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		$amp_theme_support = get_theme_support( 'amp' );
 | |
| 
 | |
| 		return ! empty( $amp_theme_support[0]['comments_live_list'] );
 | |
| 	}
 | |
| }
 |