<?php
// === BLOQUE 1: CABECERA DEL PLUGIN ===
// Este bloque declara todos los metadatos del plugin. WordPress lo reconoce y lo muestra en el panel de plugins.
/*
Plugin Name: Plugin Ejemplo Avanzado
Plugin URI: https://tuweb.com/plugin-ejemplo
Description: Plugin de ejemplo que añade un shortcode [hola_plugin] y carga un script en el frontend.
Version: 1.0.0
Requires at least: 5.5
Tested up to: 6.5
Requires PHP: 7.4
Author: Tomàs Cascante
Author URI: https://tomascascante.com
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: plugin-ejemplo
Domain Path: /languages
*/
// === BLOQUE 2: FUNCIONALIDAD PRINCIPAL ===
// Este bloque añade un shortcode que se puede usar en cualquier entrada o página de WordPress.
// Al escribir [hola_plugin] se muestra un mensaje personalizado en azul.
function pej_hola_shortcode() {
return '<p style="color:blue; font-weight:bold;">Hola desde el Plugin Ejemplo</p>';
}
add_shortcode('hola_plugin', 'pej_hola_shortcode');
// === BLOQUE 3: FUNCIONES COMPLEMENTARIAS ===
// Este bloque incluye funciones auxiliares típicas en plugins reales.
// Al activar el plugin, guarda una opción en la base de datos
function pej_al_activar() {
add_option('pej_activado', 'sí', '', 'yes');
}
register_activation_hook(__FILE__, 'pej_al_activar');
// Al desactivarlo, elimina la opción guardada
function pej_al_desactivar() {
delete_option('pej_activado');
}
register_deactivation_hook(__FILE__, 'pej_al_desactivar');
// Carga un script JavaScript en el frontend (por ejemplo, para ampliar funcionalidad)
function pej_cargar_scripts() {
wp_enqueue_script(
'pej-script',
plugin_dir_url(__FILE__) . 'js/script-ejemplo.js',
array(), // dependencias
'1.0',
true // en footer
);
}
add_action('wp_enqueue_scripts', 'pej_cargar_scripts');
// Carga los archivos de traducción si existen en /languages
function pej_cargar_textdomain() {
load_plugin_textdomain('plugin-ejemplo', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
add_action('plugins_loaded', 'pej_cargar_textdomain');
?>