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'] );
|
|
}
|
|
}
|