Requerido: Charitable Pro 1.8.18+
Nota: Actualmente, la carga de activos – o algunos de sus aspectos – está en "beta", por lo que este documento podría actualizarse con frecuencia. Vuelve a consultarlo regularmente para ver las últimas actualizaciones.
Por defecto, Charitable carga sus scripts front-end en cada página de tu sitio. Eso es deliberado. Un botón de Donar se puede colocar en casi cualquier lugar, incluyendo un menú del tema, un bloque HTML personalizado, un área de widgets o una plantilla de constructor de páginas, y algunas de esas ubicaciones no se pueden detectar antes de que la página se construya. Cargar en todas partes significa que un botón de Donar siempre funciona, dondequiera que lo coloques.
Si prefieres intercambiar esa seguridad por un front-end más ligero, la configuración de Carga de Activos te permite limitar los scripts front-end de Charitable a las páginas donde realmente puede ver un formulario de donación o una campaña.
Cuándo usarlo
- Una herramienta de velocidad como PageSpeed Insights o Lighthouse está listando archivos de Charitable en páginas que no tienen formulario de donación.
- Tu formulario de donación se encuentra en una página de campaña, y el resto del sitio no necesita los scripts del formulario.
- Estás ajustando las Core Web Vitals y quieres menos solicitudes en tu página de inicio.
Si tus botones de Donar abren un modal de donación directamente en una página, o tu tema añade enlaces de Donar a través de un menú o plantilla en lugar de contenido de página, quédate con la configuración predeterminada. Consulta "Si tus botones de Donar dejan de abrirse" más abajo.
Cómo encontrarlo
Charitable > Ajustes > Avanzado > Varios, bajo Carga de Activos.
Los dos modos
| Modo | Lo que hace |
|---|---|
| Cargar en Todas las Páginas (Recomendado) | El comportamiento predeterminado y original. Los scripts front-end de Charitable se cargan en cada página, por lo que un botón de Donar funciona sin importar dónde se coloque. |
| Cargar Solo en Páginas con Formulario o Campaña | Los scripts front-end de Charitable se cargan solo donde detecta contenido de Charitable. Más ligero, pero las ubicaciones que no puede detectar necesitarán un filtro (abajo). |
El valor predeterminado no ha cambiado respecto a versiones anteriores, por lo que al actualizar no cambia nada hasta que cambies tú mismo los modos.
Qué cuenta como una página con formulario o campaña
En el segundo modo, Charitable comprueba la página actual para ver si hay:
- Una página de campaña individual.
- Una página de punto final de Charitable, como el formulario de donación, el recibo de donación, el panel del donante, la página de inicio de sesión, registro o perfil.
- Cualquier shortcode de Charitable conocido en el contenido de la página.
- Cualquier bloque de Charitable, incluyendo bloques de complementos y módulos Divi 5 almacenados como bloques.
Lo que no puede ver es el marcado añadido fuera del contenido de la página. Un enlace de Donar en un menú del tema, una clase CSS charitable-modal-trigger añadida manualmente, o contenido inyectado por otro plugin son invisibles para esta comprobación. Los filtros en la sección de desarrolladores existen precisamente para esos casos.
Lo que cambia esta configuración hoy
La configuración rige los scripts front-end de Charitable:
charitable-frontend.min.js, el script del formulario general.- El paquete del botón de donación modal, que consta de
charitable-universal-modal(script y hoja de estilos),charitable.min.jsy la precarga de Stripe que permite que un campo de tarjeta se monte dentro de un modal.
Algunos archivos continúan cargándose en cada página en ambos modos:
charitable.min.cssyvisual-form-themes.min.css, las hojas de estilo principales.charitable-session.min.js, que contiene el estado de la donación.- Hojas de estilo de funciones como
charitable-donor-comments.cssycharitable-videos.css. - Archivos pertenecientes a complementos separados, como
charitable-recurring.min.cssde Donaciones Recurrentes.
Se planea una cobertura más amplia para una futura versión. Mientras tanto, el fragmento al final de esta página recorta esos archivos en páginas sin contenido de Charitable, utilizando la propia detección de Charitable para que sus páginas de campaña no se vean afectadas.
Después de cambiar la configuración
Borra tus cachés. Esta es una configuración de todo el sitio, y las páginas cacheadas antes del cambio seguirán sirviendo el conjunto de archivos antiguo. Borra la caché de tu página y cualquier caché de CSS y JS combinada o minificada, en WP Rocket, LiteSpeed Cache, WP Super Cache, WP-Optimize, Autoptimize o lo que sea que uses. Una prueba PageSpeed contra una página cachead a obsoleta no mostrará ningún cambio y parecerá que la configuración no hizo nada.
Dos archivos que no se deben tocar
charitable-session.min.js. Esto contiene la sesión de donación, incluida la cantidad que un donante eligió antes de llegar al formulario. Eliminarlo puede romper las donaciones de maneras difíciles de rastrear, y es pequeño. Déjalo.
js.stripe.com/v3. Stripe solicita que esto se cargue en cada página para que Stripe Radar pueda ver el recorrido completo del visitante al calificar un pago por fraude. Eliminarlo en todo el sitio puede reducir la calidad de esa calificación. Si aún necesita hacerlo, el filtro charitable_stripe_load_stripe_scripts_sitewide lo desactiva, pero comprenda esa compensación antes de usarlo.
Si tus botones de donación dejan de abrirse
Casi siempre esto significa que un botón de donación se encuentra en un lugar que la verificación de contenido de la página no puede ver, como un menú de tema, una plantilla de encabezado o un bloque de HTML personalizado con la clase charitable-modal-trigger.
O bien, vuelve a Cargar en todas las páginas, o indica a Charitable que esas páginas cuentan como contenido:
add_filter(
'charitable_current_page_has_content',
function ( $has_content ) {
// Treat the homepage and the "Ways to Give" page as Charitable content.
if ( is_front_page() || is_page( 'ways-to-give' ) ) {
return true;
}
return $has_content;
}
);
Referencia del desarrollador
Los seis filtros a continuación deben registrarse antes de la prioridad 20 de wp_enqueue_scripts, así que enganchalos desde un plugin, un plugin indispensable o el functions.php de tu tema en el nivel superior en lugar de dentro de un gancho posterior.
| Filtro | Tipo | Lo que controla |
|---|---|---|
charitable_is_strict_asset_loading | booleano | El modo resuelto. Devuelve true para forzar el modo restringido independientemente de la configuración, o false para forzar el predeterminado. |
charitable_current_page_has_content | booleano | La respuesta final sobre si la página actual cuenta como contenido de Charitable. El comodín para cualquier cosa que las verificaciones no puedan ver. |
charitable_load_frontend_scripts | booleano | Si charitable-frontend.min.js se pone en cola en esta solicitud. |
shortcodes_contenido_caritativo | matriz | Etiquetas de shortcode que cuentan como contenido caritativo. Añade las tuyas. |
bloques_contenido_caritativo | matriz | Nombres de bloques que cuentan como contenido caritativo, incluidos los bloques de otros espacios de nombres. |
endpoints_contenido_caritativo | matriz | IDs de endpoints caritativos que cuentan como contenido. El sufijo _page al final es opcional. |
Dos de estas también son funciones públicas, por lo que tu propio código puede basar sus assets en la misma decisión que toma Charitable:
charitable_is_strict_asset_loading()devuelve si el modo restringido está activo.charitable_current_page_has_content()devuelve si la página actual contiene contenido caritativo.
También existe charitable_enqueue_modal_donation_assets, que es anterior a esta configuración. Devolver false elimina todo el paquete del botón de donación modal en la solicitud actual.
Recortando los archivos restantes
Este fragmento elimina todas las hojas de estilo y scripts de Charitable en páginas que Charitable en sí no considera contenido, manteniendo los dos archivos mencionados anteriormente. Pregunta a charitable_current_page_has_content() en lugar de codificar las condiciones de la página, por lo que las páginas de campaña, el recibo de donación y el panel del donante nunca se modifican. También coincide por la ubicación del archivo en lugar del nombre del manejador, por lo que cubre archivos complementarios sin que tengas que listarlos.
add_action(
'wp_enqueue_scripts',
function () {
// Let Charitable decide. On any page it considers content, change nothing.
if ( ! function_exists( 'charitable_current_page_has_content' ) || charitable_current_page_has_content() ) {
return;
}
// Files that must keep loading everywhere.
$keep = array( 'charitable-sessions', 'js-cookie', 'stripe-v3' );
foreach ( array( 'styles', 'scripts' ) as $type ) {
$assets = ( 'styles' === $type ) ? wp_styles() : wp_scripts();
$dequeue = array();
// Collect first. Dequeuing while looping over the queue skips entries.
foreach ( (array) $assets->queue as $handle ) {
if ( in_array( $handle, $keep, true ) ) {
continue;
}
$src = isset( $assets->registered[ $handle ] ) ? $assets->registered[ $handle ]->src : '';
if ( is_string( $src ) && false !== strpos( $src, '/plugins/charitable' ) ) {
$dequeue[] = $handle;
}
}
foreach ( $dequeue as $handle ) {
if ( 'styles' === $type ) {
wp_dequeue_style( $handle );
} else {
wp_dequeue_script( $handle );
}
}
}
},
100
);
Añádelo con un plugin de fragmentos de código como WPCode, o en un plugin must-use. La prioridad 100 es importante: tiene que ejecutarse después de que Charitable y sus complementos hayan puesto en cola sus archivos.
Después de añadirlo, borra tus cachés y vuelve a probar. En un sitio de prueba con Charitable Pro, Donaciones Recurrentes, comentarios de donantes y vídeos activos, esto redujo la página de inicio de 18 archivos de Charitable a 2, y dejó los 24 archivos de la página de campaña sin tocar.
Dos cosas a comprobar una vez que esté en vivo:
- Abre una página de campaña y haz una donación de prueba. No debería verse afectada en absoluto. Si no es así, el fragmento se está ejecutando en un lugar donde no debería, y
charitable_current_page_has_contentes el filtro para corregirlo. - Comprueba cualquier página con un botón de donación que abra una ventana modal. Si un botón deja de funcionar, añade esa página a través del filtro
charitable_current_page_has_contentmostrado anteriormente.





