<?php
|
|
|
|
/**
|
|
* The public-facing functionality of the plugin.
|
|
*
|
|
* @link https://horizontes.info
|
|
* @since 1.0.0
|
|
*
|
|
* @package Reuna_Glossario
|
|
* @subpackage Reuna_Glossario/public
|
|
*/
|
|
|
|
/**
|
|
* The public-facing functionality of the plugin.
|
|
*
|
|
* Defines the plugin name, version, and two examples hooks for how to
|
|
* enqueue the public-facing stylesheet and JavaScript.
|
|
*
|
|
* @package Reuna_Glossario
|
|
* @subpackage Reuna_Glossario/public
|
|
* @author Horizontes Coop. <contato@horizontes.info>
|
|
*/
|
|
class Reuna_Glossario_Public {
|
|
|
|
/**
|
|
* The ID of this plugin.
|
|
*
|
|
* @since 1.0.0
|
|
* @access private
|
|
* @var string $plugin_name The ID of this plugin.
|
|
*/
|
|
private $plugin_name;
|
|
|
|
/**
|
|
* The version of this plugin.
|
|
*
|
|
* @since 1.0.0
|
|
* @access private
|
|
* @var string $version The current version of this plugin.
|
|
*/
|
|
private $version;
|
|
|
|
/**
|
|
* Initialize the class and set its properties.
|
|
*
|
|
* @since 1.0.0
|
|
* @param string $plugin_name The name of the plugin.
|
|
* @param string $version The version of this plugin.
|
|
*/
|
|
public function __construct( $plugin_name, $version ) {
|
|
|
|
$this->plugin_name = $plugin_name;
|
|
$this->version = $version;
|
|
|
|
}
|
|
|
|
/**
|
|
* Register the stylesheets for the public-facing side of the site.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function enqueue_styles()
|
|
{
|
|
wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'dist/css/glossario.css', [], $this->version, 'all' );
|
|
}
|
|
|
|
/**
|
|
* Register the [glossario] shortcode.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function register_glossario_shortcode()
|
|
{
|
|
add_shortcode('glossario', array($this, 'handle_glossario_shortcode'));
|
|
}
|
|
|
|
/**
|
|
* Handle the [glossario] shortcode.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function handle_glossario_shortcode($atts, $content = null)
|
|
{
|
|
$atts = shortcode_atts([
|
|
'id' => '',
|
|
], $atts);
|
|
|
|
$args = [
|
|
'post_type' => 'glossario',
|
|
];
|
|
|
|
if ($atts['id']) {
|
|
$args['page_id'] = $atts['id'];
|
|
} else {
|
|
$args['post_title_like'] = $content;
|
|
}
|
|
|
|
$glossario_query = new WP_Query($args);
|
|
|
|
if (! $glossario_query->found_posts) {
|
|
return $content;
|
|
}
|
|
|
|
$post = $glossario_query->get_posts()[0];
|
|
|
|
do_action('reuna_handle_glossario_shortcode', $post);
|
|
|
|
ob_start();
|
|
include plugin_dir_path(__FILE__) . 'views/shortcode-output.php';
|
|
return ob_get_clean();
|
|
}
|
|
|
|
/**
|
|
* Output the glossario post modal
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function output_glossario_post_modal($post)
|
|
{
|
|
add_action('get_footer', function() use ($post) {
|
|
require plugin_dir_path(__FILE__) . 'views/post-modal.php';
|
|
});
|
|
}
|
|
}
|