How do you know when to add your action to init or wp_head. In particular with regards to scripts and styles, but also any other action.
From Codex Action Reference:
init
Runs after WordPress has finished loading but before any headers are sent. Useful for intercepting $_GET or $_POST triggers.
wp_head
Runs when the template calls the wp_head function. This hook is generally placed near the top of a page template between <head> and </head>. This hook does not take any parameters.
Basically wp_head
runs when page is already being loaded, while init
runs before that.
Also don't forget that init
fires on admin pages as well and anything front-end related must be excluded from there with !is_admin()
check.