Indicaciones del cliente: adopción solo Perros/Gatos, fichas nuevas y todo configurable
- Adopción sin filtros ni etiquetas: acceso a Perros y Gatos, tarjetas de foto y nombre. - Ficha nueva: galería, vídeo, fecha de nacimiento o edad aproximada, carácter, necesidades, convivencia y hogar que buscamos (textos por idioma, datos compartidos). - Estados disponible / en proceso / adoptado y animales destacados. - Botón «Quiero conocerlo/la» con formulario breve (animal incluido) y confirmación. - Botones para compartir cada ficha (WhatsApp, Facebook, copiar enlace). - Portada corta según la propuesta del cliente; donaciones, cifras, etc. ocultas. - Páginas Acoge y Preguntas frecuentes, menú con submenús, sin hotel. - Aviso de cita previa y lista de ayuda material editables desde el panel. - Plugin núcleo dividido en módulos (i18n, animales, formularios, APIs). - Migración 5 idempotente: respeta las páginas editadas por el cliente. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
118
wp-content/mu-plugins/gure-ametsa/i18n.php
Normal file
118
wp-content/mu-plugins/gure-ametsa/i18n.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/**
|
||||
* Idioma (castellano / euskera), datos de la protectora y ajustes.
|
||||
*/
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
/** Idioma actual: 'es' o 'eu'. El panel de administración siempre en castellano. */
|
||||
function ga_lang() {
|
||||
if ( isset( $GLOBALS['ga_forced_lang'] ) ) {
|
||||
return 'eu' === $GLOBALS['ga_forced_lang'] ? 'eu' : 'es';
|
||||
}
|
||||
if ( is_admin() && ! wp_doing_ajax() ) {
|
||||
return 'es';
|
||||
}
|
||||
$lang = function_exists( 'pll_current_language' ) ? pll_current_language() : '';
|
||||
return 'eu' === $lang ? 'eu' : 'es';
|
||||
}
|
||||
|
||||
/** Devuelve el texto en el idioma actual. */
|
||||
function ga__( $es, $eu ) {
|
||||
return 'eu' === ga_lang() ? $eu : $es;
|
||||
}
|
||||
|
||||
/** Imprime el texto escapado en el idioma actual. */
|
||||
function ga_e( $es, $eu ) {
|
||||
echo esc_html( ga__( $es, $eu ) );
|
||||
}
|
||||
|
||||
/** Ejecuta $callback como si el idioma actual fuera $lang. */
|
||||
function ga_with_lang( $lang, callable $callback ) {
|
||||
$previous = $GLOBALS['ga_forced_lang'] ?? null;
|
||||
$GLOBALS['ga_forced_lang'] = $lang;
|
||||
try {
|
||||
return $callback();
|
||||
} finally {
|
||||
if ( null === $previous ) {
|
||||
unset( $GLOBALS['ga_forced_lang'] );
|
||||
} else {
|
||||
$GLOBALS['ga_forced_lang'] = $previous;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** URL de una página por su slug en castellano, en el idioma actual. */
|
||||
function ga_page_url( $slug_es, $fragment = '' ) {
|
||||
$page = get_page_by_path( $slug_es );
|
||||
if ( ! $page ) {
|
||||
return home_url( "/$slug_es/" ) . $fragment;
|
||||
}
|
||||
$id = $page->ID;
|
||||
if ( function_exists( 'pll_get_post' ) ) {
|
||||
$id = pll_get_post( $id, ga_lang() ) ?: $id;
|
||||
}
|
||||
return get_permalink( $id ) . $fragment;
|
||||
}
|
||||
|
||||
/** URL del listado de una especie (slug en castellano: perro, gato) en el idioma actual. */
|
||||
function ga_species_url( $slug_es ) {
|
||||
$term = get_term_by( 'slug', $slug_es, 'especie' );
|
||||
if ( $term && function_exists( 'pll_get_term' ) ) {
|
||||
$translated = pll_get_term( $term->term_id, ga_lang() );
|
||||
$term = $translated ? get_term( $translated, 'especie' ) : $term;
|
||||
}
|
||||
$url = $term && ! is_wp_error( $term ) ? get_term_link( $term ) : '';
|
||||
return is_wp_error( $url ) || ! $url ? get_post_type_archive_link( 'animal' ) : $url;
|
||||
}
|
||||
|
||||
/* Animales y especies son traducibles; los mensajes no. */
|
||||
add_filter( 'pll_get_post_types', function ( $types ) {
|
||||
$types['animal'] = 'animal';
|
||||
unset( $types['ga_mensaje'] );
|
||||
return $types;
|
||||
} );
|
||||
|
||||
add_filter( 'pll_get_taxonomies', function ( $taxonomies ) {
|
||||
$taxonomies['especie'] = 'especie';
|
||||
return $taxonomies;
|
||||
} );
|
||||
|
||||
/**
|
||||
* Ajuste del personalizador del tema, con valor por defecto si el tema no está activo.
|
||||
*/
|
||||
function ga_setting( $section, $field, $default = '' ) {
|
||||
if ( function_exists( 'ga_opt' ) ) {
|
||||
$value = ga_opt( $section, $field );
|
||||
return null === $value ? $default : $value;
|
||||
}
|
||||
return $default;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------
|
||||
* Datos de la protectora (el tema los sustituye por los del personalizador)
|
||||
* ---------------------------------------------------------------------- */
|
||||
|
||||
function ga_info( $key = null ) {
|
||||
$info = apply_filters( 'ga_info', array(
|
||||
'nombre' => 'Bilagun',
|
||||
'direccion' => 'Jaizubia, 44 · 20280 Hondarribia (Gipuzkoa)',
|
||||
'telefono' => '943 64 52 79',
|
||||
'email' => 'hola@gureametsabilagun.org',
|
||||
'horario' => ga__( 'Lunes a viernes: 10:00–13:00 y 14:00–19:00', 'Astelehenetik ostiralera: 10:00–13:00 eta 14:00–19:00' ),
|
||||
'cita' => ga__( 'Atendemos con cita previa. Escríbenos o llámanos antes de venir.', 'Aurretiko hitzorduarekin artatzen dugu. Idatzi edo deitu iezaguzu etorri aurretik.' ),
|
||||
'instagram' => 'https://www.instagram.com/gureametsabilagun/',
|
||||
'facebook' => 'https://www.facebook.com/gureametsabilagun/',
|
||||
'maps' => 'https://www.google.com/maps/search/?api=1&query=Jaizubia+44+Hondarribia',
|
||||
) );
|
||||
return $key ? ( $info[ $key ] ?? '' ) : $info;
|
||||
}
|
||||
|
||||
/** Correo que recibe los formularios: ajuste del panel → variable GA_CONTACT_EMAIL → administrador. */
|
||||
function ga_contact_email() {
|
||||
$email = ga_setting( 'adopcion', 'form_email', '' );
|
||||
if ( ! is_email( $email ) ) {
|
||||
$email = getenv( 'GA_CONTACT_EMAIL' );
|
||||
}
|
||||
return is_email( $email ) ? $email : get_option( 'admin_email' );
|
||||
}
|
||||
Reference in New Issue
Block a user