Как add_action и WP_Query

Я новичок в WP, полу-новый для PHP и новый для ООП.

1) Как функция add_action WP может использовать другую функцию в качестве аргумента? Я знаю, что это само по себе невозможно. Я намеренно сломал код и обнаружил, что на самом деле есть собственная php-функция call_user_fun_array ,

но как они сделали это так, чтобы их собственная функция могла иметь функцию в качестве аргумента?

2) Я делаю учебник по плагинам и работаю с WP_Query, и я просто передал аргумент непосредственно WP_Query, как если бы это был метод, а не класс.

 I did the following: $loop = new WP_Query( array( 'posts_per_page' => 3 ) ); 

Я бы понял, если бы я впервые создал экземпляр класса, а THEN использовал его метод, например:

 $loop = new WP_Query(); $loop->someMethod( array( 'posts_per_page' => 3, 'category__in' => $cats, 'orderby' => 'rand', 'post__not_in' => array($id) ) ); 

но как это возможно, что экземпляр класса может также действовать как метод? (это, скорее всего, общий вопрос ООП).