2014-09-11 92 views
2

我正在開發一個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>" 
} 

目前這個代碼顯示沒有輸出。這裏有什麼問題?

回答

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