Current File : /var/www/e360ban/wp-content/plugins/wp-shortcodes-usuarios/src/clase.php |
<?php
/**
* Clase principal
* copyright Enrique J. Ros - enrique@enriquejros.com
*
* @author Enrique J. Ros
* @link https://www.enriquejros.com
* @since 1.0.0
* @package WPShortcodesUsuarios
*
*/
defined ('ABSPATH') or exit;
if (!class_exists ('Clase_WP_Shortcodes_Usuarios')) :
Class Clase_WP_Shortcodes_Usuarios {
public function __construct () {
foreach (CPT_WP_Shortcodes_Usuarios::pide_query() as $shortcode)
add_shortcode ($shortcode->post_title, function () use ($shortcode) {
return $this->devuelve_dato($shortcode->ID);
});
}
private function devuelve_dato ($shortcode_id) {
$retornar = apply_filters ('wp_shortcodes_usuarios_invitado', false, $shortcode_id);
/**
* Para mostrar un texto cuando el usuario no está identificado:
*
* add_filter ('wp_shortcodes_usuarios_invitado', function ($texto) {
*
* return 'Texto para usuarios no identificados';
* }, 10, 1);
*
*/
if (!$user_id = get_current_user_id())
return $retornar;
$dato_shortcode = get_field ('dato', $shortcode_id)['value'];
require_once (plugin_dir_path (__DIR__) . 'integraciones/wordpress.php');
$dato = new WP_Shortcodes_Usuarios_WordPress($dato_shortcode, $user_id, $shortcode_id);
if (false !== $dato->resultado) //Si no los datos cuyo resultado sea '0' no se mostrarán
return $dato->resultado;
$integraciones = array( //Nombre del archivo de integración => Clase a comprobar con class_exists
'WooCommerce' => 'WooCommerce',
'Registro' => 'Clase_WC_Campos_Registro',
'Subscriptions' => 'WC_Subscriptions',
'Memberships' => 'WC_Memberships',
'EDD' => 'Easy_Digital_Downloads',
'BuddyPress' => 'BuddyPress',
);
foreach ($integraciones as $integracion => $clase) {
if (class_exists ($clase)) {
require_once (sprintf ('%sintegraciones/%s.php', plugin_dir_path (__DIR__), strtolower ($integracion)));
$class = 'WP_Shortcodes_Usuarios_' . $integracion;
$dato = new $class($dato_shortcode, $user_id, $shortcode_id); //Por cosas como ésta me encanta PHP :)
if (false !== $dato->resultado) //Si no los datos cuyo resultado sea '0' no se mostrarán
return $dato->resultado;
}
}
}
}
endif;