No hay límites ni penalizaciones de rendimiento. Para comprender por qué, debe comprender cómo se almacenan todos los enganches en el ecosistema WP.
En primer lugar, debe comprender dónde están almacenados todos los enganches 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 matriz secundaria tiene claves numéricas y valores como matrices. Las claves numéricas son nuestras prioridades. Las matrices, asociadas con las teclas numéricas, contienen una lista de enlaces con la misma prioridad. Entonces, si llamamos a add_action( 'init', 'wpse8170_my_first_init', 20 )
, llamamos a add_action( 'init', 'wpse8170_my_second_init', 20 )
y finalmente llamamos a 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 se activa la acción init
, todos los ganchos se ordenarán con el uso de ksort
y nuestra matriz se ve 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'
.
Para que pueda ver que no hay límites y penalizaciones, y puede usar cualquier valor que sea aceptable como clave para la matriz asociada en su entorno PHP.