No hay límites ni sanciones de rendimiento. Para comprender por qué, debe comprender cómo se almacenan todos los ganchos en el ecosistema de WP.
En primer lugar, debe comprender dónde se almacenan todos los ganchos y cómo lo hacen. Todos los ganchos para filtros y acciones se almacenan en una variable global llamada wp_filter
, sí, sí, los ganchos de acción también se almacenan en esta variable. Esta variable es una matriz asociada, donde clave es el nombre de la acción o filtro y el valor es otra matriz asociativa. Por ejemplo, echemos un vistazo a la acción 'init', en esta etapa veremos la siguiente estructura:
$wp_filter = array(
'init' => array(...),
);
Esta submatriz tiene claves numéricas y valores como matrices. Las teclas numéricas son nuestras prioridades. Las matrices, asociadas con teclas numéricas, contienen una lista de ganchos con la misma prioridad. Entonces, si llamamos add_action( 'init', 'wpse8170_my_first_init', 20 )
, luego llamamos add_action( 'init', 'wpse8170_my_second_init', 20 )
y finalmente llamamos add_action( 'init', 'wpse8170_my_third_init', 10 )
, nuestro ejemplo se verá así:
$wp_filter = array(
'init' => array(
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
10 => array(
'wpse8170_my_third_init' => array(...),
),
),
);
Ahora, cuando init
se activa la acción, todos los ganchos se ordenarán con el uso de la ksort
función y nuestra matriz se verá ahora:
array(
10 => array(
'wpse8170_my_third_init' => array(...),
),
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
),
Y todos los ganchos se ejecutarán en esta cola: primero 'wpse8170_my_third_init'
, luego 'wpse8170_my_first_init'
y finalmente 'wpse8170_my_second_init'
.
Por lo tanto, puede ver que no hay límites ni penalizaciones, y puede usar cualquier valor que sea aceptable como clave para la matriz asociada de su entorno PHP.