Prioridad de hooks

La prioridad es el tercer parámetro de add_action() y add_filter(). Determina en qué orden se ejecutan los callbacks cuando varios están registrados en el mismo hook. Por defecto es 10.

Regla básica

  • Menor número → se ejecuta antes
  • Mayor número → se ejecuta después
  • Mismo número → se ejecutan en el orden en que se registraron

Visualización del orden

add_action( 'init', 'funcion_a', 5  ); // ← 1ª en ejecutarse
add_action( 'init', 'funcion_b', 10 ); // ← 2ª (prioridad por defecto)
add_action( 'init', 'funcion_c', 10 ); // ← 3ª (misma prioridad, registrada después)
add_action( 'init', 'funcion_d', 20 ); // ← 4ª

Cuándo cambiar la prioridad

// Necesitas ejecutarte ANTES del tema (que usa prioridad 10)
add_action( 'after_setup_theme', 'mi_setup_antes', 5 );

// Necesitas ejecutarte DESPUÉS de que WooCommerce cargue sus CPTs
add_action( 'init', 'mi_cpt_dependiente', 15 );

// Eliminar algo que fue añadido con prioridad específica
add_action( 'wp_head', 'funcion_del_nucleo', 7 );
remove_action( 'wp_head', 'funcion_del_nucleo', 7 ); // debe coincidir
// ⚠ Si no coincide la prioridad, remove_action NO funciona

Prioridades especiales del núcleo

// Algunas funciones del núcleo usan prioridades no estándar:
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );  // prioridad 7
remove_action( 'wp_head', 'feed_links',                   2 );  // prioridad 2
remove_action( 'wp_head', 'wp_resource_hints',            2 );  // prioridad 2

PHP_INT_MAX y PHP_INT_MIN

// Ejecutar absolutamente al final (después de todo)
add_action( 'shutdown', 'mi_ultima_funcion', PHP_INT_MAX );

// Ejecutar absolutamente al principio
add_action( 'init', 'mi_primera_funcion', PHP_INT_MIN );