2017-08-16 11 views
1

私の質問は基本的には: "バックエンド"プラグインは、ブログのフロントエンドに何の影響も与えず、匿名ユーザーが私のブログを閲覧したときに読み込まれますか?WordPressの管理プラグインはフロントエンドにロードされていますか?

はのは、例えば、EWWWイメージoptmizerを言ってみましょう:それはちょうどバックエンドで、画像をoptmize。画像を最適化するための管理インターフェースがありますが、エンドユーザーはそれをまったく使用しません。それでも、各ページの訪問に読み込まれますか?

自分自身を明確にしているかどうかはわかりません。そう思う。

+1

私の知る限りでは、管理プラグインはAdmin Dashboardのような管理者用のもので、フロントエンドとは何の関係もないので、ブログのようにフロントエンドに読み込まれません。それがフロントエンドと何か関係がない限り:) – Manjunath

答えて

1

は、私の知る限りでは唯一のWordPress APIで管理者としてのプラグインを指定する方法はありません。私が知っている唯一のプラグインの種類は、 '使用する必要があります'、 'ネットワーク活性化'(マルチユーザーサイト用)、 'アクティブ'なので、管理プラグインも非管理モードで読み込まれると思います。プラグインはwp-settings.phpに読み込まれます。コードを読んだところ、WordPressはプラグインの読み込みに関する限り、管理モードと非管理モードを区別していないようです。関連するコードは次のとおりです。もちろん

// Load must-use plugins. 
foreach (wp_get_mu_plugins() as $mu_plugin) { 
    include_once($mu_plugin); 
} 
unset($mu_plugin); 

// Load network activated plugins. 
if (is_multisite()) { 
    foreach (wp_get_active_network_plugins() as $network_plugin) { 
    wp_register_plugin_realpath($network_plugin); 
    include_once($network_plugin); 
    } 
    unset($network_plugin); 
} 

... 

// Load active plugins. 
foreach (wp_get_active_and_valid_plugins() as $plugin) { 
    wp_register_plugin_realpath($plugin); 
    include_once($plugin); 
} 
unset($plugin); 

function wp_get_mu_plugins() { 
    $mu_plugins = array(); 
    if (!is_dir(WPMU_PLUGIN_DIR)) 
    return $mu_plugins; 
    if (! $dh = opendir(WPMU_PLUGIN_DIR)) 
    return $mu_plugins; 
    while (($plugin = readdir($dh)) !== false) { 
    if (substr($plugin, -4) == '.php') 
     $mu_plugins[] = WPMU_PLUGIN_DIR . '/' . $plugin; 
    } 
    closedir($dh); 
    sort($mu_plugins); 

    return $mu_plugins; 
} 

function wp_get_active_network_plugins() { 
    $active_plugins = (array) get_site_option('active_sitewide_plugins', array()); 
    if (empty($active_plugins)) 
    return array(); 

    $plugins = array(); 
    $active_plugins = array_keys($active_plugins); 
    sort($active_plugins); 

    foreach ($active_plugins as $plugin) { 
    if (! validate_file($plugin) // $plugin must validate as file 
     && '.php' == substr($plugin, -4) // $plugin must end with '.php' 
     && file_exists(WP_PLUGIN_DIR . '/' . $plugin) // $plugin must exist 
    ) 
    $plugins[] = WP_PLUGIN_DIR . '/' . $plugin; 
    } 
    return $plugins; 
} 

function wp_get_active_and_valid_plugins() { 
    $plugins = array(); 
    $active_plugins = (array) get_option('active_plugins', array()); 

    // Check for hacks file if the option is enabled 
    if (get_option('hack_file') && file_exists(ABSPATH . 'my-hacks.php')) { 
    _deprecated_file('my-hacks.php', '1.5.0'); 
    array_unshift($plugins, ABSPATH . 'my-hacks.php'); 
    } 

    if (empty($active_plugins) || wp_installing()) 
    return $plugins; 

    $network_plugins = is_multisite() ? wp_get_active_network_plugins() : false; 

    foreach ($active_plugins as $plugin) { 
    if (! validate_file($plugin) // $plugin must validate as file 
     && '.php' == substr($plugin, -4) // $plugin must end with '.php' 
     && file_exists(WP_PLUGIN_DIR . '/' . $plugin) // $plugin must exist 
     // not already included as a network plugin 
     && (! $network_plugins || ! in_array(WP_PLUGIN_DIR . '/' . $plugin, $network_plugins)) 
    ) 
    $plugins[] = WP_PLUGIN_DIR . '/' . $plugin; 
    } 
    return $plugins; 
} 

確実に知るための最も簡単な方法は、容疑者プラグインでWordPressのインストール時にフロントエンドページをロードすることであり、それはロードかどうかを確認するためにデバッガを使用します。プラグインは、管理者の使用を意図した場合にも

、唯一のプラグインの作者は、ちょうどメインのプラグインファイルの先頭に

if (! is_admin()) { 
    return; 
} 

を持つことができます。したがって、プラグインは本質的に読み込まれません。

関連する問題