When building a plugin, I know that you can hook into a function to run some code like
add_action('admin_footer', array($this, 'custom_function'));
And within that function, test for post_type like so:
public function custom_function() {
$screen = get_current_screen();
if (self::CUSTOM_POST_TYPE == $screen->post_type) {
// Do something
}
}
}
Over the entire plugin, I’m testing the post_type of the screen in many different functions.
In the spirit of D.R.Y., my question is, is there a way to conditionally add the actions in a group based on the current post_type? Instead of having many functions that make the same test for the post_type like:
public function custom_function_1() {
$screen = get_current_screen();
if (self::CUSTOM_POST_TYPE == $screen->post_type) {
// Do something
}
}
}
public function custom_function_2() {
$screen = get_current_screen();
if (self::CUSTOM_POST_TYPE == $screen->post_type) {
// Do something
}
}
}
is it possible to test the post_type and then call the actions needed for that post type, something like:
$screen = get_current_screen();
if (self::CUSTOM_POST_TYPE == $screen->post_type) {
add_action('admin_footer', array($this, 'custom_footer_function'));
add_action('save_post', array($this, 'custom_save_function'));
add_action('delete_post', array($this, 'custom_delete_function'));
add_filter('enter_title_here', array($this, 'custom_title_placeholder'));
}
where the conditional test can be removed from all the functions?
Is there a particular hook where a test and calls like this could take place so many of the plugin’s functions don’t have to have the same code?
Thank you for any advice.