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:
@@ -9,7 +9,7 @@
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
define( 'GA_THEME_VERSION', '2.1.0' );
|
||||
define( 'GA_THEME_VERSION', '2.2.0' );
|
||||
|
||||
require_once __DIR__ . '/inc/customizer.php';
|
||||
require_once __DIR__ . '/inc/dynamic-css.php';
|
||||
@@ -171,22 +171,65 @@ function ga_brand( $context = 'header' ) {
|
||||
}
|
||||
|
||||
/* ---------- Ayudantes de animales ---------- */
|
||||
/** Distintivo de estado: solo se muestra «En proceso» o «Adoptado» (los disponibles no llevan etiqueta). */
|
||||
function ga_status_badge( $post_id = null ) {
|
||||
$post_id = $post_id ?: get_the_ID();
|
||||
$estado = ga_get( $post_id, 'estado' ) ?: 'disponible';
|
||||
$label = ga_label( $post_id, 'estado' ) ?: ga__( 'En adopción', 'Adopzioan' );
|
||||
printf( '<span class="ga-status ga-status--%s">%s</span>', esc_attr( $estado ), esc_html( $label ) );
|
||||
$estado = ga_status( $post_id );
|
||||
if ( 'disponible' === $estado ) {
|
||||
return;
|
||||
}
|
||||
printf( '<span class="ga-status ga-status--%s">%s</span>', esc_attr( $estado ), esc_html( ga_label( $post_id, 'estado' ) ) );
|
||||
}
|
||||
|
||||
/** Foto principal o, si no hay, la silueta del logo. */
|
||||
function ga_animal_photo( $size = 'ga-card', $post_id = null ) {
|
||||
$post_id = $post_id ?: get_the_ID();
|
||||
if ( has_post_thumbnail( $post_id ) ) {
|
||||
echo get_the_post_thumbnail( $post_id, $size, array( 'loading' => 'lazy' ) );
|
||||
} else {
|
||||
echo '<div class="ga-card__placeholder">' . ga_icon( 'paw' ) . '</div>';
|
||||
echo '<div class="ga-card__placeholder">' . ga_placeholder_svg() . '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
/** Silueta del logo para huecos sin foto. */
|
||||
function ga_placeholder_svg() {
|
||||
return ga_logo_svg( 'mark' ) ?: ga_icon( 'paw' );
|
||||
}
|
||||
|
||||
/** Texto del botón «Quiero conocerlo / conocerla» según el sexo. */
|
||||
function ga_meet_label( $post_id = null ) {
|
||||
$post_id = $post_id ?: get_the_ID();
|
||||
return 'hembra' === ga_get( $post_id, 'sexo' ) ? ga_opt( 'adopcion', 'btn_f' ) : ga_opt( 'adopcion', 'btn_m' );
|
||||
}
|
||||
|
||||
/** Enlaces para compartir una ficha. */
|
||||
function ga_share_links( $post_id = null ) {
|
||||
$post_id = $post_id ?: get_the_ID();
|
||||
$url = get_permalink( $post_id );
|
||||
$text = get_the_title( $post_id ) . ' — ' . ga__( 'busca familia en Bilagun', 'familia bila Bilagunen' );
|
||||
printf(
|
||||
'<div class="ga-share"><span>%s</span><a class="ga-share__btn" href="%s" target="_blank" rel="noopener">WhatsApp</a><a class="ga-share__btn" href="%s" target="_blank" rel="noopener">Facebook</a><button type="button" class="ga-share__btn" data-copy="%s" data-done="%s">%s</button></div>',
|
||||
esc_html( ga__( 'Comparte su historia:', 'Partekatu haren istorioa:' ) ),
|
||||
esc_url( 'https://wa.me/?text=' . rawurlencode( $text . ' ' . $url ) ),
|
||||
esc_url( 'https://www.facebook.com/sharer/sharer.php?u=' . rawurlencode( $url ) ),
|
||||
esc_attr( $url ),
|
||||
esc_attr( ga__( '¡Copiado!', 'Kopiatuta!' ) ),
|
||||
esc_html( ga__( 'Copiar enlace', 'Kopiatu esteka' ) )
|
||||
);
|
||||
}
|
||||
|
||||
/** Vídeo de la ficha: oEmbed (YouTube, Vimeo…) o archivo de vídeo. */
|
||||
function ga_video_html( $url ) {
|
||||
if ( ! $url ) {
|
||||
return '';
|
||||
}
|
||||
if ( preg_match( '/\.(mp4|webm|mov)(\?.*)?$/i', $url ) ) {
|
||||
return '<video controls preload="metadata" playsinline src="' . esc_url( $url ) . '"></video>';
|
||||
}
|
||||
$embed = wp_oembed_get( $url, array( 'width' => 900 ) );
|
||||
return $embed ?: '<a href="' . esc_url( $url ) . '" target="_blank" rel="noopener">' . esc_html( ga__( 'Ver vídeo', 'Ikusi bideoa' ) ) . '</a>';
|
||||
}
|
||||
|
||||
function ga_species( $post_id = null ) {
|
||||
$terms = get_the_terms( $post_id ?: get_the_ID(), 'especie' );
|
||||
return $terms && ! is_wp_error( $terms ) ? $terms[0]->name : '';
|
||||
@@ -199,15 +242,6 @@ function ga_plural( $name ) {
|
||||
return preg_match( '/s$/i', $name ) ? $name : $name . 's';
|
||||
}
|
||||
|
||||
/** «Bien con niños» / «Haurrekin ondo» a partir de la etiqueta «Niños» / «Haurrak». */
|
||||
function ga_compat_label( $label ) {
|
||||
$label = mb_strtolower( $label );
|
||||
if ( 'eu' === ga_lang() ) {
|
||||
return mb_strtoupper( mb_substr( $label, 0, 1 ) ) . mb_substr( preg_replace( '/ak$/u', 'ekin', $label ), 1 ) . ' ondo';
|
||||
}
|
||||
return 'Bien con ' . $label;
|
||||
}
|
||||
|
||||
/** URL de la página de contacto con el animal preseleccionado. */
|
||||
function ga_adopt_url( $post_id = null ) {
|
||||
return add_query_arg( 'adoptar', $post_id ?: get_the_ID(), ga_page_url( 'contacto' ) ) . '#formulario';
|
||||
|
||||
Reference in New Issue
Block a user