'method_name',
'wp_head' => ['function_to_add' => 'render', 'priority' => 1],
'italystrap_before' => ['function_to_add' => 'render', 'priority' => 1],
];
}
/**
* Plugin options settings.
*/
private ?array $options = null;
private static string $position = '';
/**
* Init the constructor.
*
* @param array $argument Plugin options settings.
*/
function __construct(array $options = [])
{
$this->options = $options;
// add_filter( 'body_class', array( $this, 'render_tag_manager' ), 10000, 2 );
}
/**
* Render
*
* @param string $value [description]
* @return string [description]
*/
public function render()
{
if (is_customize_preview() || is_preview() || is_admin()) {
return;
}
if (empty($this->options['google_tag_manager_id'])) {
return;
}
$current_filter = current_filter() === 'wp_head';
$file_name = $current_filter
? 'head'
: 'body';
echo $this->get_view($file_name);
}
/**
* Get the tag manager script
*
* @param string $value [description]
* @return string [description]
*/
public function get_view($file_name = '')
{
$id = $this->options['google_tag_manager_id'];
ob_start();
require('views/tag-manager-' . $file_name . '.php');
return ob_get_clean();
}
/**
* Google tag manager
* @link http://www.tagmanageritalia.it/come-installare-google-tag-manager-tramite-wordpress/
* Filters the list of CSS body classes for the current post or page.
*
* @since 2.2.2
*
* @param array $classes An array of body classes.
* @param array $class An array of additional classes added to the body.
*/
public function render_tag_manager($classes, $class)
{
if (is_customize_preview() || is_preview() || is_admin()) {
return;
}
if (empty($this->options['google_tag_manager_id'])) {
return;
}
$snippet = sprintf(
'',
esc_js($this->options['google_tag_manager_id'])
);
$classes[] = sprintf(
'">%s