Druid for WordPress
Druid Wordpress Plugin
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/dru-id/wp-druid/archive/refs/heads/main.zipPlugin DruID para WordPress
Este plugin integra DruID Identity en WordPress para autenticación, registro, edición de cuenta y logout mediante OAuth2.
Instalación
- Empaquete o descargue el plugin como ZIP.
- En WordPress vaya a
Plugins -> Añadir nuevo -> Subir plugin. - Instale y active el plugin.
- Tras activarlo, acceda al menú
DruIDdel admin para completar la configuración.
Comportamiento de instalación
- En la activación el plugin prepara o actualiza su persistencia interna.
- En la desactivación no se borra la configuración ni los logs.
- En la desinstalación se elimina la información interna generada por el plugin.
Configuración del plugin
La configuración se gestiona desde DruID -> Config.

Campos disponibles
-
DomainDominio de la plataforma DruID. Se utiliza en la configuración del SDK. -
Client IDIdentificador de cliente de la app en DruID. -
Client SecretSecreto asociado alClient ID. -
EnvironmentEntorno de DruID. Los valores soportados por la interfaz actual son:devtestprod
-
Entry PointPunto de entrada por defecto. Puede sobreescribirse en los shortcodes. -
Log PathRuta relativa alDocument Rootdonde el SDK escribe los logs de fichero. -
Cache PathRuta relativa alDocument Rootdonde el SDK almacena la caché. -
Log LevelNivel de log del SDK y del registro de errores del plugin. Los valores soportados por la interfaz actual son:DEBUGERROROFF
Rutas relevantes
- Callback OAuth del plugin:
home_url('/actions/callback')
La URL de callback a registrar en DruID debe apuntar a la URL completa generada por home_url('/actions/callback').
Pantallas de administración
DruID -> Config
Pantalla principal de configuración del plugin.
DruID -> Druid Logs
Pestaña dentro de la pantalla principal que muestra la traza técnica disponible del SDK cuando el logging está configurado.

DruID -> Error Log
Submenú independiente que muestra los errores funcionales registrados por el plugin.
Esta pantalla muestra:
- fecha (
logged_at) - sección
- código de error
- mensaje
Uso del plugin
El plugin expone shortcodes para mostrar enlaces o bloques de autenticación.
Integraciones
El plugin expone algunas APIs y hooks públicos que pueden reutilizarse desde temas o plugins complementarios para integraciones de frontend y flujos de autenticación.
URLs de autenticación
Se pueden obtener URLs públicas sin renderizar shortcodes:
\WP_Druid\Services\Shortcodes::get_login_url($attributes = array())\WP_Druid\Services\Shortcodes::get_register_url($attributes = array())\WP_Druid\Services\Shortcodes::get_edit_account_url($attributes = array())\WP_Druid\Services\Shortcodes::get_logout_url($attributes = array())
Los atributos soportados siguen la misma semántica general que los shortcodes, por ejemplo entrypoint, social, url-to-redirect o state, según aplique.
Ejemplo:
$login_url = \WP_Druid\Services\Shortcodes::get_login_url(array(
'entrypoint' => 'XXXXXXXXXXXXX-default',
'url-to-redirect' => home_url('/mi-cuenta/'),
));
Estado de vinculación del usuario
Para comprobar si el usuario actual está vinculado con DruID y obtener su identificador público:
\WP_Druid\Services\Users::has_druid_link($wp_user_id = null)\WP_Druid\Services\Users::get_druid_id_by_wp_user_id($wp_user_id)\WP_Druid\Services\Users::get_current_user_druid_id()
Ejemplo:
if (is_user_logged_in() && \WP_Druid\Services\Users::has_druid_link()) {
$druid_id = \WP_Druid\Services\Users::get_current_user_druid_id();
}
Usuario logado en DruID
Si necesita consultar el usuario actual directamente desde la sesion DruID activa, el plugin expone una API publica basada en el SDK integrado:
\WP_Druid\Services\Users::get_current_user_druid_user_data()\WP_Druid\Services\Users::get_current_user_druid_profile()\WP_Druid\Services\Users::get_druid_profile_from_user_data($druid_user_data)
Notas:
get_current_user_druid_user_data()devuelve el objeto bruto obtenido desdeGenetsis\UserApi::getUserLogged().get_current_user_druid_profile()devuelve un perfil normalizado para integraciones ligeras con:druid_idemailemail_confirmedfirst_namelast_namedisplay_name
- Estas APIs leen el usuario actual desde DruID, no desde la replica persistida en WordPress.
Ejemplos:
$druid_user = \WP_Druid\Services\Users::get_current_user_druid_user_data();
if ($druid_user instanceof \stdClass) {
$email = $druid_user->user->user_ids->email->value ?? null;
}
$profile = \WP_Druid\Services\Users::get_current_user_druid_profile();
if (is_array($profile) && !empty($profile['email'])) {
$email = $profile['email'];
}
Tambien puede normalizar el payload recibido en los hooks publicos del plugin:
add_action('druid_post_login', function ($context) {
if (!is_array($context) || empty($context['druid_user']) || !($context['druid_user'] instanceof \stdClass)) {
return;
}
$profile = \WP_Druid\Services\Users::get_druid_profile_from_user_data($context['druid_user']);
}, 10, 1);
Hooks públicos
El plugin expone hooks para reaccionar a eventos del ciclo de autenticación:
WPDR_ACTION_POST_LOGIN/druid_post_loginWPDR_ACTION_POST_REGISTER/druid_post_registerWPDR_ACTION_POST_EDIT_ACCOUNT/druid_post_edit_account
Ejemplo:
add_action('druid_post_login', function ($context) {
if (!is_array($context) || empty($context['wp_user_id'])) {
return;
}
// Integracion personalizada tras un login valido en WordPress.
}, 10, 1);
[druid_auth_controls]
Renderiza un bloque combinado de login/registro o de cuenta/logout según el estado del usuario en DruID.
Parámetros:
entrypoint: entry point a utilizar.social: proveedor social a utilizar en login, si aplica.url-to-redirect: URL a la que volver tras el flujo.state: estado adicional a preservar.show_login:trueofalse. Por defectotrue.show_register:trueofalse. Por defectotrue.get_only_url: devuelve solo la URL deloginoregister.
Si no se informa url-to-redirect, el shortcode utiliza por defecto la URL actual de la pagina donde se renderiza. Si por algun motivo esa informacion no llega al callback, el plugin intenta volver a la ultima URL valida del frontend guardada en sesion y, si no existe, a home_url().
Clases CSS:
druid-auth-controlsdruid-auth-usernamedruid-auth-control-linkdruid-edit-accountdruid-logoutdruid-logindruid-register
Ejemplo:
[druid_auth_controls entrypoint="XXXXXXXXXXXXX-default"]
[druid_auth_controls_login]
Renderiza un enlace de login.
Parámetros:
entrypoint: entry point a utilizar.social: proveedor social a utilizar, si aplica.text: texto del enlace. Por defectoLogin.url-to-redirect: URL a la que volver tras el login.state: estado adicional a preservar.
Si no se informa url-to-redirect, el shortcode utiliza por defecto la URL actual de la pagina donde se renderiza. Si por algun motivo esa informacion no llega al callback, el plugin intenta volver a la ultima URL valida del frontend guardada en sesion y, si no existe, a home_url().
Clases CSS:
druid-auth-controls-logindruid-auth-control-linkdruid-login
Ejemplo:
[druid_auth_controls_login text="Iniciar sesión"]
[druid_auth_controls_register]
Renderiza un enlace de registro.
Parámetros:
entrypoint: entry point a utilizar.text: texto del enlace. Por defectoRegister.url-to-redirect: URL a la que volver tras el registro.state: estado adicional a preservar.
Si no se informa url-to-redirect, el shortcode utiliza por defecto la URL actual de la pagina donde se renderiza. Si por algun motivo esa informacion no llega al callback, el plugin intenta volver a la ultima URL valida del frontend guardada en sesion y, si no existe, a home_url().
Clases CSS:
druid-auth-controls-registerdruid-auth-control-linkdruid-register
Ejemplo:
[druid_auth_controls_register text="Registrarse"]
[druid_auth_controls_edit_account]
Renderiza un enlace a la edición de cuenta en DruID.
Parámetros:
entrypoint: entry point a utilizar.text: texto del enlace. Por defectoMy account.url-to-redirect: URL a la que volver tras editar la cuenta.state: estado adicional a preservar.
Si no se informa url-to-redirect, el shortcode utiliza por defecto la URL actual de la pagina donde se renderiza. Si por algun motivo esa informacion no llega al callback, el plugin intenta volver a la ultima URL valida del frontend guardada en sesion y, si no existe, a home_url().
Clases CSS:
druid-auth-controls-edit-accountdruid-auth-control-linkdruid-edit-account
Ejemplo:
[druid_auth_controls_edit_account text="Mi cuenta"]
[druid_auth_controls_logout]
Renderiza un enlace de logout del plugin.
Parámetros:
text: texto del enlace. Por defectoLogout.url-to-redirect: URL a la que volver tras el logout.state: estado adicional a preservar.
Si no se informa url-to-redirect, el shortcode utiliza por defecto la URL actual de la pagina donde se renderiza. Si por algun motivo esa informacion no llega al callback, el plugin intenta volver a la ultima URL valida del frontend guardada en sesion y, si no existe, a home_url().
Clases CSS:
druid-auth-controls-logoutdruid-auth-control-linkdruid-logout
Ejemplo:
[druid_auth_controls_logout text="Cerrar sesión"]
Notas de funcionamiento
- El plugin utiliza la sesión de DruID para construir los enlaces y sincronizar el estado del usuario.
- Los shortcodes no generan enlaces si la configuración básica del plugin está incompleta.
- Los errores funcionales del plugin quedan disponibles desde la pantalla
DruID -> Error Log.