I am developing a WordPress plugin and can't conditionally add filters based on the conditional tags.
This is my code:
add_Action('init', 'determine_location');
function determine_location() {
$d = get_option('display_locations'); //this is a checkbox field in the plugins settings with 7 options
if (isset($d)) {
if ($d[0] == 'home') {
if (is_home()) {
add_filter('the_excerpt', 'insert_buttons_to_post_top');
add_filter('the_content', 'insert_buttons_to_post_top');
}
} else if ($d == 'post' || $d == 'post') {
if (is_single()) {
add_filter('the_content', 'insert_buttons_to_post_top');
}
} else if ($d[0] == 'page' || $d == 'page' || $d == 'page') {
if (is_page()) {
add_filter('the_content', 'insert_buttons_to_post_top');
}
} else if ($d[0] == 'category' || $d[1] == 'category' || $d[2] == 'category' || $d[3] == 'category') {
if (is_category()) {
add_filter('the_excerpt', 'insert_buttons_to_post_top');
add_filter('the_content', 'insert_buttons_to_post_top');
}
} else if ($d[0] == 'tag' || $d[1] == 'tag' || $d[2] == 'tag' || $d[3] == 'tag' || $d[4] == 'tag') {
if (is_tag()) {
add_filter('the_excerpt', 'insert_buttons_to_post_top');
add_filter('the_content', 'insert_buttons_to_post_top');
}
} else if ($d[0] == 'archive' || $d[1] == 'archive' || $d[2] == 'archive' || $d[3] == 'archive' || $d[4] == 'archive' || $d[5] == 'archive') {
if (is_archive()) {
add_filter('the_excerpt', 'insert_buttons_to_post_top');
add_filter('the_content', 'insert_buttons_to_post_top');
}
}
}
}
function insert_buttons_to_post_top(){
return "<div>Output</div>"
}
Currently this code shows no output. What is wrong here?
Do it like this by simply adding separate actions for each of your custom functions: