Q: Adicionar javascript a plugin Wordpress Registrei meu arquivo Javascript em meu plugin porém as funções de click e etc. não funcionam.
Registrei meu arquivo principal do plugin com a action:
function add_scripts_to_plugin()
{
     wp_enqueue_script( 'birthdate_celebrate_js', dirname(__FILE__) . '/includes/assets/js/main.js', array( 'jquery' ));
}
add_action('wp_enqueue_scripts', 'add_scripts_to_plugin');

O arquivo Javascript:
jQuery( function( $ ) {
    $('#birthdate_celebrate_send_mails').on('click', function () {
        console.log('clicked');
    });
});

O plugin carrega normalmente e não apresenta nenhum erro no console nem no PHP, mas mesmo assim o eventListener de clique não é adicionado ao botão.

A: Encontrei a resposta neste tópico do stack em inglês.
Para incluir o arquivo com wp_enqueue_script que seja um plugin, deve-se utilizar a função plugin_dir_url e não get_template_directory_uri(), pois esta função retorna uma URL que aponta para o tema atual que esta sendo usado.
Resolução:
function birthdate_celebrate_add_interactions_to_plugin()
{
    wp_enqueue_script( 'birthdate_celebrate', plugin_dir_url( __FILE__ ) . 'includes/assets/js/birthdate_celebrate.js', array( 'jquery' ), '1.0');
}
add_action('admin_enqueue_scripts', 'birthdate_celebrate_add_interactions_to_plugin');


A: Eu vejo duas coisas que potencialmente podem dar problema aí, mas nada garante que são elas. A primeira é usar dirname(__FILE__) ao invés de get_template_directory_uri():
function add_scripts_to_plugin()
{
     wp_enqueue_script( 'birthdate_celebrate_js', get_template_directory_uri() . '/includes/assets/js/main.js', array( 'jquery' ));
}
add_action('wp_enqueue_scripts', 'add_scripts_to_plugin');

A segunda é colocar um evento de clique em um elemento que esteja na página desde o page load, e delegar ao botão:
jQuery( function( $ ) {
    // troque 'body' por um outro seletor mais próximo, talvez um pai direto do botão que quer alcançar.
    $('body').on('click', '#birthdate_celebrate_send_mails' , function () {
        console.log('clicked');
    });
});


A: Seu código está correto, fiz um teste numa página apenas com um botão com esse id e funcionou.
Veja se na hora que você tenta anexar o evento o objeto já existe, coloque antes uma instrução para imprimir o resultado de $('#birthdate_celebrate_send_mails'):
jQuery( function( $ ) {
    console.log($('#birthdate_celebrate_send_mails'));
    $('#birthdate_celebrate_send_mails').on('click', function () {
        console.log('clicked');
    });
});

Outra forma de fazer, caso o objeto seja incluído depois, seria assim:
    $(document).on('click', '#birthdate_celebrate_send_mails', function () {
        console.log('clicked');
    });

