2015-09-26 48 views
2

我正在为WordPress构建手机插件,我想增加停用非移动兼容插件的可能性。Wordpress在手机上取消激活插件

我发现了一些有帮助的代码,但不是我所需要的。

debug_filter("/^woocommerce/i"); 
function debug_filter($regex_filter_action_to_match = "//"){ 
global $wp_filter; 
$hook=$wp_filter; 
ksort($hook); 
echo "<pre style='background-color:white;'>"; 
foreach($hook as $tag => $priority){ 

    //check for a regex match of hook name 
    if (!preg_match($regex_filter_action_to_match, $tag)) continue; 

    echo "<br /><strong>$tag</strong><br />"; 
    ksort($priority); 
    foreach($priority as $priority => $function){ 
    echo " $priority \n"; 
     foreach($function as $name => $properties) { 


      echo "\t$name "; 

      if (function_exists($name)){ 
       $func = new ReflectionFunction($name); 
       $filename = $func->getFileName(); 
       $start_line = $func->getStartLine() - 1; // it's actually - 1, otherwise you wont get the function() block 
       $path_info = pathinfo($filename); 
       print_r($func); 
        echo "<em style='font-size:90%;opacity:0.5;' title='{$filename}'> {$path_info[filename]}.{$path_info[extension]}: line {$start_line}</em>"; 
      } 
      echo "<br />"; 
      remove_filter($tag, $name, $priority); 
      //remove_action('init', array('Jetpack_Likes', 'action_init') ); 
     } 
    } 
} 
echo '</pre>'; 
return; 
} 

有没有人设法建立或知道一个类,将使用remove_filter & remove_action禁用插件。

感谢您的帮助。

  • 戴夫
+0

我想我已经找到了答案,谢谢你。测试完成后我会将其发布在下面。 –

回答

0

这是我想出了。它可能不完美,但它似乎工作。

wp_remove_filter("/^woocommerce/i"); 

function wp_remove_filter($regex_filter_action_to_match = "//"){ 
global $wp_filter, $wp_actions ; 
$hook=$wp_filter; 

ksort($hook); 

echo "<pre style='background-color:white;'>"; 
foreach($hook as $tag => $priority){ 

    if (!preg_match($regex_filter_action_to_match, $tag)) continue; 

    ksort($priority); 
    foreach($priority as $priority => $function){ 

     foreach($function as $name => $properties) { 

      if (function_exists($name)){ 
       $func = new ReflectionFunction($name); 
       $filename = $func->getFileName(); 
       $start_line = $func->getStartLine() - 1; // it's actually - 1, otherwise you wont get the function() block 
       $path_info = pathinfo($filename); 

       if($priority ==""): 
       remove_action($tag, $name); 
       else: 
       remove_action($tag, $name, $priority); 
       endif; 

      }else{ 
       if($priority ==""): 
       remove_filter($tag, $name); 
       else: 
       remove_filter($tag, $name, $priority); 
       endif; 

      } 
      //remove_action('init', array('Jetpack_Likes', 'action_init')); 
     } 
    } 
} 
echo '</pre>'; 
return; 
}