Files
Josep Piguillem 4acc8b62d1 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>
2026-09-24 22:16:24 +02:00

119 lines
4.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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' );
}