Finales felices (con revisión) y apadrinamiento, preparados y ocultos

- Formulario [ga_final_feliz]: las familias envían texto y foto (solo imágenes reales ≤5 MB,
  límite de envíos, consentimiento de publicación). Queda pendiente hasta que el equipo
  la publica; aviso por correo y contador en el menú.
- Sección «Finales felices»: historias aprobadas o, si no hay, los adoptados.
- Casilla «Busca padrino o madrina», sección «Apadrina» y motivo de contacto (sin pagos).
- Páginas «Finales felices / Amaiera zoriontsuak» creadas como borrador.
- API: profile.sponsorable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-25 10:30:53 +02:00
parent fac5e6035c
commit 1ad21c1b08
12 changed files with 293 additions and 23 deletions

View File

@@ -103,6 +103,7 @@ function ga_fields() {
'adoptado' => ga__( 'Adoptado', 'Adoptatuta' ),
), 'help' => 'Los adoptados salen solos del listado.' ),
'destacado' => array( 'shared' => true, 'label' => ga__( 'Destacado', 'Nabarmendua' ), 'type' => 'checkbox', 'help' => 'Aparece en la portada. Útil para quien lleva más tiempo esperando o necesita un hogar especial.' ),
'apadrinable' => array( 'shared' => true, 'label' => ga__( 'Busca padrino o madrina', 'Aitabitxi edo amabitxi bila' ), 'type' => 'checkbox', 'help' => 'Aparece en la sección «Apadrina» (si está activada en Personalizar).' ),
'sexo' => array( 'shared' => true, 'label' => ga__( 'Sexo', 'Sexua' ), 'type' => 'select', 'options' => array(
'macho' => ga__( 'Macho', 'Arra' ),
'hembra' => ga__( 'Hembra', 'Emea' ),
@@ -434,7 +435,7 @@ add_action( 'pre_get_posts', function ( $q ) {
* @param array $args numero, especie (slugs), estado (lista o 'adoptado'), destacados (bool).
*/
function ga_query_animals( $args = array() ) {
$args = wp_parse_args( $args, array( 'numero' => 6, 'especie' => '', 'estado' => '', 'destacados' => false ) );
$args = wp_parse_args( $args, array( 'numero' => 6, 'especie' => '', 'estado' => '', 'destacados' => false, 'apadrinables' => false ) );
$query = array(
'post_type' => 'animal',
'posts_per_page' => (int) $args['numero'],
@@ -457,6 +458,9 @@ function ga_query_animals( $args = array() ) {
if ( $args['destacados'] ) {
$meta[] = array( 'key' => '_ga_destacado', 'value' => '1' );
}
if ( $args['apadrinables'] ) {
$meta[] = array( 'key' => '_ga_apadrinable', 'value' => '1' );
}
$query['meta_query'] = $meta;
$q = new WP_Query( $query );
@@ -472,8 +476,10 @@ function ga_query_animals( $args = array() ) {
/* [ga_animales numero="6" especie="perro" destacados="1" vista="carrusel"] */
add_shortcode( 'ga_animales', function ( $atts ) {
$atts = shortcode_atts( array( 'numero' => 6, 'especie' => '', 'estado' => '', 'destacados' => '', 'vista' => 'rejilla' ), $atts, 'ga_animales' );
$atts['destacados'] = in_array( $atts['destacados'], array( '1', 'si', 'true' ), true );
$atts = shortcode_atts( array( 'numero' => 6, 'especie' => '', 'estado' => '', 'destacados' => '', 'apadrinables' => '', 'vista' => 'rejilla' ), $atts, 'ga_animales' );
foreach ( array( 'destacados', 'apadrinables' ) as $flag ) {
$atts[ $flag ] = in_array( $atts[ $flag ], array( '1', 'si', 'true' ), true );
}
$q = ga_query_animals( $atts );
ob_start();
if ( $q->have_posts() ) {