如何根据页面相关的条件标签有条件地添加过滤器

时间:2014-09-11 06:28:58

标签: wordpress

我正在开发一个WordPress插件,无法根据条件标签有条件地添加过滤器。

这是我的代码:

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>"
}

目前此代码未显示输出。这有什么不对?

1 个答案:

答案 0 :(得分:2)

通过简单地为每个自定义函数添加单独的操作来执行此操作:

    add_action('wp', 'custom1');

    function custom1() {

          if ($d == 'post'){
             if (is_single()) {
                add_filter('the_content', 'insert_buttons_to_post_bottom');
             }
           }

    }

    add_action('wp', 'custom2');

    function custom2(){
       if ($d == 'page'){
             if (is_page()) {
                add_filter('the_content', 'insert_buttons_to_post_bottom');
             }
           }
    }

    add_action('wp', 'custom3');

    function custom3(){
    if ($d == 'archive'){
             if (is_archive()) {
                add_filter('the_content', 'insert_buttons_to_post_bottom');
             }
           }
    }

function insert_buttons_to_post_bottom(){
return "something";
}