Erfordert: Charitable Pro 1.8.18+
Hinweis: Derzeit befindet sich das Laden von Assets – oder einige Aspekte davon – im „Beta“-Stadium, daher kann dieses Dokument häufig aktualisiert werden. Schauen Sie regelmäßig für die neuesten Updates vorbei.
Standardmäßig lädt Charitable seine Frontend-Skripte auf jeder Seite Ihrer Website. Das ist beabsichtigt. Ein Spenden-Button kann fast überall platziert werden, einschließlich in einem Theme-Menü, einem benutzerdefinierten HTML-Block, einem Widget-Bereich oder einer Page-Builder-Vorlage, und einige dieser Platzierungen können nicht erkannt werden, bevor die Seite erstellt ist. Das Laden überall bedeutet, dass ein Spenden-Button immer funktioniert, egal wo Sie ihn platzieren.
Wenn Sie diese Sicherheit lieber gegen ein leichteres Frontend eintauschen möchten, können Sie mit der Einstellung Asset Loading die Frontend-Skripte von Charitable auf Seiten beschränken, auf denen es tatsächlich ein Spendenformular oder eine Kampagne erkennen kann.
Wann Sie es verwenden würden
- Ein Geschwindigkeitstool wie PageSpeed Insights oder Lighthouse listet Charitable-Dateien auf Seiten auf, die kein Spendenformular haben.
- Ihr Spendenformular befindet sich auf einer Kampagnenseite, und der Rest der Website benötigt die Formular-Skripte nicht.
- Sie optimieren Core Web Vitals und möchten weniger Anfragen auf Ihrer Homepage.
Wenn Ihre Spenden-Buttons ein Spenden-Modal direkt auf einer Seite öffnen oder Ihr Theme Spenden-Links über ein Menü oder eine Vorlage anstelle von Seiteninhalt hinzufügt, bleiben Sie bei der Standardeinstellung. Siehe „Wenn Ihre Spenden-Buttons nicht mehr öffnen“ unten.
Finden
Charitable > Einstellungen > Erweitert > Diverses, unter Asset Loading.
Die beiden Modi
| Modus | Was es tut |
|---|---|
| Auf allen Seiten laden (Empfohlen) | Die Standardeinstellung und das ursprüngliche Verhalten. Die Frontend-Skripte von Charitable werden auf jeder Seite geladen, sodass ein Spenden-Button funktioniert, egal wo er platziert ist. |
| Nur auf Seiten mit Formular oder Kampagne laden | Die Frontend-Skripte von Charitable werden nur dort geladen, wo es Charitable-Inhalt erkennt. Leichter, aber Platzierungen, die es nicht erkennen kann, benötigen einen Filter (unten). |
Die Standardeinstellung ist gegenüber früheren Versionen unverändert, sodass ein Upgrade nichts ändert, bis Sie die Modi selbst wechseln.
Was zählt als Seite mit einem Formular oder einer Kampagne
Im zweiten Modus prüft Charitable die aktuelle Seite auf:
- Eine einzelne Kampagnenseite.
- Eine Charitable-Endpunktseite, wie das Spendenformular, die Spendenquittung, das Spender-Dashboard, die Anmelde-, Registrierungs- oder Profilseite.
- Jeden bekannten Charitable-Shortcode im Seiteninhalt.
- Jeden Charitable-Block, einschließlich Add-on-Blöcke und Divi 5-Module, die als Blöcke gespeichert sind.
Was es nicht sehen kann, ist Markup, das außerhalb des Seiteninhalts hinzugefügt wurde. Ein Spendenlink in einem Theme-Menü, eine manuell hinzugefügte CSS-Klasse charitable-modal-trigger oder von einem anderen Plugin eingefügter Inhalt sind für diese Prüfung unsichtbar. Die Filter im Entwicklerbereich existieren genau für diese Fälle.
Was diese Einstellung heute ändert
Die Einstellung regelt die Frontend-Skripte von Charitable:
charitable-frontend.min.js, das allgemeine Formularskript.- Das Modal-Spenden-Button-Bundle, das
charitable-universal-modal(Skript und Stylesheet),charitable.min.jsund das Stripe-Preload-Skript enthält, mit dem ein Kartenfeld in einem Modal angezeigt werden kann.
Einige Dateien werden in beiden Modi weiterhin auf jeder Seite geladen:
charitable.min.cssundvisual-form-themes.min.css, die Haupt-Stylesheets.charitable-session.min.js, das den Spendenstatus enthält.- Feature-Stylesheets wie
charitable-donor-comments.cssundcharitable-videos.css. - Dateien, die zu separaten Add-ons gehören, wie z. B.
charitable-recurring.min.cssvon Recurring Donations.
Eine breitere Abdeckung ist für eine zukünftige Version geplant. In der Zwischenzeit kürzt der Snippet am Ende dieser Seite die Dateien auf Seiten ohne Charitable-Inhalte, indem er die eigene Erkennung von Charitable verwendet, sodass Ihre Kampagnenseiten unberührt bleiben.
Nachdem Sie die Einstellung geändert haben
Löschen Sie Ihre Caches. Dies ist eine seiteweite Einstellung, und Seiten, die vor der Änderung zwischengespeichert wurden, werden weiterhin den alten Satz von Dateien ausliefern. Löschen Sie Ihren Seiten-Cache und jeden Cache für kombinierte oder minimierte CSS- und JS-Dateien in WP Rocket, LiteSpeed Cache, WP Super Cache, WP-Optimize, Autoptimize oder was auch immer Sie verwenden. Ein PageSpeed-Test einer veralteten zwischengespeicherten Seite zeigt keine Änderung und sieht so aus, als hätte die Einstellung nichts bewirkt.
Zwei Dateien, die Sie in Ruhe lassen sollten
charitable-session.min.js. Dies enthält die Spendersitzung, einschließlich des Betrags, den ein Spender ausgewählt hat, bevor er das Formular erreicht hat. Das Entfernen kann Spenden auf schwer nachvollziehbare Weise beeinträchtigen, und es ist klein. Lassen Sie es.
js.stripe.com/v3. Stripe bittet darum, dass dies auf jeder Seite geladen wird, damit Stripe Radar die vollständige Besucherhistorie sehen kann, wenn eine Zahlung auf Betrug geprüft wird. Das Entfernen auf der gesamten Website kann die Qualität dieser Prüfung verringern. Wenn Sie es dennoch tun müssen, schaltet der Filter charitable_stripe_load_stripe_scripts_sitewide ihn aus, aber verstehen Sie diesen Kompromiss, bevor Sie ihn verwenden.
Wenn Ihre Spenden-Buttons nicht mehr geöffnet werden
Das bedeutet fast immer, dass sich ein Spenden-Button irgendwo befindet, den die Seiteninhaltsprüfung nicht sehen kann, z. B. in einem Theme-Menü, einer Header-Vorlage oder einem benutzerdefinierten HTML-Block mit der Klasse charitable-modal-trigger.
Entweder wechseln Sie zurück zu Auf allen Seiten laden oder Sie teilen Charitable mit, dass diese Seiten als Inhalt zählen:
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;
}
);
Entwicklerreferenz
Alle sechs unten aufgeführten Filter müssen vor der Priorität 20 von wp_enqueue_scripts registriert werden. Haken Sie sie daher aus einem Plugin, einem Must-Use-Plugin oder der functions.php Ihres Themes auf oberster Ebene an und nicht innerhalb eines späteren Hooks.
| Filter | Typ | Was es steuert |
|---|---|---|
charitable_is_strict_asset_loading | bool | Der aufgelöste Modus. Geben Sie true zurück, um den eingeschränkten Modus unabhängig von der Einstellung zu erzwingen, oder false, um den Standard zu erzwingen. |
charitable_current_page_has_content | bool | Die endgültige Antwort darauf, ob die aktuelle Seite als Charitable-Inhalt zählt. Der Auffangbehälter für alles, was die Prüfungen nicht sehen können. |
charitable_load_frontend_scripts | bool | Ob charitable-frontend.min.js bei dieser Anfrage eingebunden wird. |
charitable_content_shortcodes | Array | Shortcode-Tags, die als Charitable-Inhalt zählen. Fügen Sie Ihre eigenen hinzu. |
charitable_content_blocks | Array | Block-Namen, die als Charitable-Inhalt zählen, einschließlich Blöcke in anderen Namespaces. |
charitable_content_endpoints | Array | Charitable-Endpunkt-IDs, die als Inhalt zählen. Der nachgestellte Suffix _page ist optional. |
Zwei davon sind auch öffentliche Funktionen, sodass Ihr eigener Code seine Assets auf dieselbe Entscheidung stützen kann, die Charitable trifft:
charitable_is_strict_asset_loading()gibt zurück, ob der eingeschränkte Modus aktiv ist.charitable_current_page_has_content()gibt zurück, ob die aktuelle Seite Inhalte von Charitable enthält.
Es gibt auch charitable_enqueue_modal_donation_assets, das älter ist als diese Einstellung. Die Rückgabe von false entfernt das gesamte Modal-Spenden-Button-Bundle für die aktuelle Anfrage.
Bereinigung der verbleibenden Dateien
Dieser Ausschnitt entfernt jedes Charitable-Stylesheet und -Skript auf Seiten, die Charitable selbst nicht als Inhalt betrachtet, während die beiden oben genannten Dateien beibehalten werden. Er fragt charitable_current_page_has_content() ab, anstatt Seitenbedingungen fest zu codieren. Daher werden Kampagnenseiten, die Spendenquittung und das Spender-Dashboard niemals berührt. Er gleicht auch nach dem Dateispeicherort ab und nicht nach dem Handle-Namen, sodass er Add-on-Dateien abdeckt, ohne dass Sie sie auflisten müssen.
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
);
Fügen Sie ihn mit einem Code-Snippet-Plugin wie WPCode oder in einem Must-Use-Plugin hinzu. Priorität 100 ist wichtig: Er muss ausgeführt werden, nachdem Charitable und seine Add-ons ihre Dateien in die Warteschlange gestellt haben.
Nach dem Hinzufügen leeren Sie Ihre Caches und testen Sie erneut. Auf einer Testseite mit aktiven Charitable Pro, Recurring Donations, Donor Comments und Videos reduzierte sich die Anzahl der Charitable-Dateien auf der Homepage von 18 auf 2, und die 24 Dateien der Kampagnenseite blieben unberührt.
Zwei Dinge, die Sie überprüfen sollten, sobald es live ist:
- Öffnen Sie eine Kampagnenseite und tätigen Sie eine Testspende. Sie sollte überhaupt nicht beeinträchtigt sein. Wenn dies nicht der Fall ist, wird der Ausschnitt irgendwo ausgeführt, wo er nicht ausgeführt werden sollte, und
charitable_current_page_has_contentist der Filter, um dies zu korrigieren. - Überprüfen Sie jede Seite mit einem Spenden-Button, der ein Modal öffnet. Wenn ein Button nicht mehr funktioniert, fügen Sie diese Seite über den zuvor gezeigten
charitable_current_page_has_content-Filter hinzu.





