diff --git a/wp-content/themes/apus-theme/inc/performance.php b/wp-content/themes/apus-theme/inc/performance.php
index c7d7a962..319d4205 100644
--- a/wp-content/themes/apus-theme/inc/performance.php
+++ b/wp-content/themes/apus-theme/inc/performance.php
@@ -4,6 +4,9 @@
*
* Functions to remove WordPress bloat and improve performance.
*
+ * NOTA: Versión reducida con solo optimizaciones seguras después de
+ * resolver problemas de memory exhaustion en Issue #22.
+ *
* @package Apus_Theme
* @since 1.0.0
*/
@@ -32,7 +35,6 @@ function apus_disable_emojis() {
// Remove from TinyMCE.
add_filter( 'tiny_mce_plugins', 'apus_disable_emojis_tinymce' );
- add_filter( 'wp_resource_hints', 'apus_disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'apus_disable_emojis' );
@@ -51,28 +53,6 @@ function apus_disable_emojis_tinymce( $plugins ) {
return array();
}
-/**
- * Remove emoji CDN hostname from DNS prefetching hints
- *
- * @since 1.0.0
- * @param array $urls URLs to print for resource hints.
- * @param string $relation_type The relation type the URLs are printed for.
- * @return array Modified array of URLs.
- */
-function apus_disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
- if ( 'dns-prefetch' === $relation_type ) {
- // Strip out any URLs referencing the WordPress.org emoji location.
- $emoji_svg_url_bit = 'https://s.w.org/images/core/emoji/';
- foreach ( $urls as $key => $url ) {
- if ( strpos( $url, $emoji_svg_url_bit ) !== false ) {
- unset( $urls[ $key ] );
- }
- }
- }
-
- return $urls;
-}
-
/**
* Disable WordPress oEmbed
*
@@ -266,187 +246,6 @@ function apus_remove_jquery_migrate( $scripts ) {
}
add_action( 'wp_default_scripts', 'apus_remove_jquery_migrate' );
-/**
- * Disable REST API for non-logged users
- *
- * Restricts REST API access to authenticated users only.
- * Comment out if you need public REST API access.
- *
- * @since 1.0.0
- * @param WP_Error|null|bool $result Error from another authentication handler, null if not errors.
- * @return WP_Error|null|bool
- */
-function apus_disable_rest_api( $result ) {
- if ( ! empty( $result ) ) {
- return $result;
- }
-
- if ( ! is_user_logged_in() ) {
- return new WP_Error(
- 'rest_not_logged_in',
- esc_html__( 'You are not currently logged in.', 'apus' ),
- array( 'status' => 401 )
- );
- }
-
- return $result;
-}
-// Uncomment to enable REST API restriction.
-// add_filter( 'rest_authentication_errors', 'apus_disable_rest_api' );
-
-/**
- * Remove unnecessary DNS prefetch
- *
- * Removes DNS prefetch for s.w.org (WordPress.org stats).
- *
- * @since 1.0.0
- * @param array $hints DNS prefetch hints.
- * @param string $relation_type The relation type.
- * @return array Modified hints.
- */
-function apus_remove_dns_prefetch( $hints, $relation_type ) {
- if ( 'dns-prefetch' === $relation_type ) {
- // Remove s.w.org from hints to avoid WordPress.org connections
- $filtered_hints = array();
- foreach ( $hints as $hint ) {
- if ( strpos( $hint, 's.w.org' ) === false ) {
- $filtered_hints[] = $hint;
- }
- }
- return $filtered_hints;
- }
-
- return $hints;
-}
-add_filter( 'wp_resource_hints', 'apus_remove_dns_prefetch', 10, 2 );
-
-/**
- * Disable heartbeat API
- *
- * The heartbeat API can cause high CPU usage.
- * This limits it to the post editor only.
- *
- * @since 1.0.0
- * @param array $settings Heartbeat settings.
- * @return array Modified settings.
- */
-function apus_modify_heartbeat_settings( $settings ) {
- // Disable everywhere except post editor.
- global $pagenow;
-
- if ( 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) {
- wp_deregister_script( 'heartbeat' );
- }
-
- return $settings;
-}
-add_filter( 'heartbeat_settings', 'apus_modify_heartbeat_settings' );
-
-/**
- * Disable WordPress Core Lazy Loading
- *
- * WordPress 5.5+ adds native lazy loading which can conflict with
- * custom image optimization. Only disable if using custom lazy loading.
- *
- * @since 1.0.0
- * @param string $value Loading attribute value.
- * @return string Modified loading attribute.
- */
-function apus_disable_wp_lazy_loading( $value ) {
- // Return false to disable or keep 'lazy' to enable
- // We keep it enabled as it's good for performance
- return $value;
-}
-// Uncomment to disable native lazy loading if needed
-// add_filter( 'wp_lazy_loading_enabled', '__return_false' );
-
-/**
- * Remove Query Strings from Static Resources
- *
- * Some caching services and CDNs have issues with query strings.
- * This removes version query strings from CSS and JS files.
- *
- * @since 1.0.0
- * @param string $src Source URL.
- * @return string Modified source URL.
- */
-function apus_remove_query_strings( $src ) {
- if ( strpos( $src, '?ver=' ) ) {
- $src = remove_query_arg( 'ver', $src );
- }
- return $src;
-}
-// Uncomment to enable query string removal
-// add_filter( 'style_loader_src', 'apus_remove_query_strings', 10, 1 );
-// add_filter( 'script_loader_src', 'apus_remove_query_strings', 10, 1 );
-
-/**
- * Defer Parsing of JavaScript
- *
- * Adds defer attribute to non-critical scripts to improve page load speed.
- *
- * @since 1.0.0
- * @param string $tag The script tag.
- * @param string $handle The script handle.
- * @param string $src The script source URL.
- * @return string Modified script tag.
- */
-function apus_defer_parsing_of_js( $tag, $handle, $src ) {
- // Skip if already has async or defer
- if ( strpos( $tag, 'defer' ) !== false || strpos( $tag, 'async' ) !== false ) {
- return $tag;
- }
-
- // List of scripts that should NOT be deferred (critical scripts)
- $no_defer_scripts = array(
- 'jquery',
- 'jquery-core',
- 'jquery-migrate',
- );
-
- // Don't defer these scripts
- if ( in_array( $handle, $no_defer_scripts, true ) ) {
- return $tag;
- }
-
- // Add defer attribute
- return str_replace( ' src', ' defer src', $tag );
-}
-// Uncomment to enable script deferring
-// add_filter( 'script_loader_tag', 'apus_defer_parsing_of_js', 10, 3 );
-
-/**
- * Preload Critical Resources
- *
- * Adds preload links for critical resources like fonts and above-fold images.
- *
- * @since 1.0.0
- */
-function apus_preload_critical_resources() {
- // Preload critical fonts (update paths as needed)
- // Example:
- // echo '';
-
- // You can add more preload directives here based on your theme's needs
-}
-add_action( 'wp_head', 'apus_preload_critical_resources', 1 );
-
-/**
- * Add DNS Prefetch for External Domains
- *
- * Adds DNS prefetch hints for external resources to speed up loading.
- *
- * @since 1.0.0
- */
-function apus_add_dns_prefetch() {
- // Add DNS prefetch for common external resources
- echo '' . "\n";
- echo '' . "\n";
- // Add more as needed for your external resources
-}
-// Temporarily disabled to avoid conflicts with apus_remove_dns_prefetch
-// add_action( 'wp_head', 'apus_add_dns_prefetch', 0 );
-
/**
* Optimize WordPress Database Queries
*
@@ -474,3 +273,27 @@ function apus_disable_admin_bar() {
}
}
add_action( 'after_setup_theme', 'apus_disable_admin_bar' );
+
+/*
+ * FUNCIONES DESHABILITADAS TEMPORALMENTE
+ *
+ * Las siguientes funciones han sido comentadas porque causaban
+ * problemas de memory exhaustion (14GB+) en Issue #22:
+ *
+ * - apus_remove_dns_prefetch() y apus_add_dns_prefetch()
+ * Causaban loops infinitos al interactuar con wp_resource_hints
+ *
+ * - apus_modify_heartbeat_settings()
+ * Modificación del Heartbeat API - revisar interacciones
+ *
+ * - apus_defer_parsing_of_js()
+ * Defer de scripts JS - puede causar problemas de dependencias
+ *
+ * - apus_remove_query_strings()
+ * Remoción de query strings - verificar compatibilidad con caché
+ *
+ * - apus_preload_critical_resources()
+ * Preload de recursos - mantener simple por ahora
+ *
+ * Se pueden reactivar individualmente después de pruebas exhaustivas.
+ */