如何覆盖VALIDATE_PLUGIN函数

时间:2014-01-28 作者:Vignesh Pichamani

如何覆盖WordPressvalidate_plugin 作用我需要为我的插件单独禁用该功能,它不应该影响任何其他插件。

我现在不想为我的插件使用validate\\u plugin函数,我找不到声明的挂钩,do_actionapply_filter, 在wp-admin/includes/plugin.php 文件

<?php
function run_activate_plugin( $plugin ) {
    $current = get_option( \'active_plugins\' );
    $plugin = plugin_basename( trim( $plugin ) );

    if ( !in_array( $plugin, $current ) ) {
        $current[] = $plugin;
        sort( $current );
        do_action( \'activate_plugin\', trim( $plugin ) );
        update_option( \'active_plugins\', $current );
        do_action( \'activate_\' . trim( $plugin ) );
        do_action( \'activated_plugin\', trim( $plugin) );
    }

    return null;
}
run_activate_plugin( \'plugin/subfolder/plugin.php\');

?>
如果我从子文件夹激活插件,它会因为上述功能而被停用。因此,我想为我的插件单独禁用validate\\u plugin函数的原因。

run_activate_plugin( \'plugin/subfolder/plugin.php\');
通常run\\u activate\\u plugin参数如下所示

run_activate_plugin( \'akismet/akismet.php\');
但现在我正在这样从子文件夹激活插件

run_activate_plugin( \'akismet/newfolder/akismet.php\');
有什么建议吗?

1 个回复
SO网友:Ste_95

我的解决方案是:在函数中生成回溯,如果从validate_active_plugins().

function action_option_active_plugins( $value, $option ) {

    // Look at the call backtrace and bail early if called from validation function.
    $backtrace = debug_backtrace( 2 ); // Exclude [\'object\'] and [\'args\']
    foreach( $backtrace as $frame ) {
        if( $frame[\'function\'] === \'validate_active_plugins\' ) {
            return $value;
        }
    }

    //Do other stuff with $value...

    return $value;
 }
 add_filter( \'option_active_plugins\', \'wpcom_vip_option_active_plugins\', 10, 2 );

结束

相关推荐

theme functions (hooks)

WordPress已经提出了这个问题,但没有答案。我只是想在这个论坛上试试,如果有人知道的话,因为我也有同样的问题。要使用jquery滑块编辑我的主题,如何转到该脚本?,显示“$主题->挂钩(\'content\\u before\');”在content div标记中。有人能帮忙吗?我的主题索引。php包含以下内容<div id=\"main\"> <?php $theme->hook(\'main_before\'); ?> &#x