2016-09-02 9 views
0

私はYOast SEOを検出したいと思います。私はすでにこの機能を使用しています:YOast SEOプラグインを検出

function active($plugin) { 
    $network_active = false; 
    if (is_multisite()) { 
     $plugins = get_site_option('active_sitewide_plugins'); 
     if (isset($plugins[$plugin])) { 
      $network_active = true; 
     } 
    } 
    return in_array($plugin, get_option('active_plugins')) || $network_active; 
} 

if (active('wordpress-seo/wp-seo.php') { 

これは問題ありません。しかしYoastがwordpress-seo/wp-seo.phpの名前を変更することを考えると、この機能は役に立たなくなります。だから我々はWPSEO_VERSION定数のように、バックアップを追加するために変更することは困難であるものが必要:

if (active('wordpress-seo/wp-seo.php') { 
    // activate 
} elseif(defined('WPSEO_VERSION')) { 
    // activate 
} else { 
    // deactivate 
} 

このラインif(defined('WPSEO_VERSION')) {を何らかの理由で可能ということがいかに... Yoastを検出しませんか?

ありがとうございました。

+0

まず、このファイルの名前を変更しません。 第2に、Fencer04が指摘したように、プラグイン関連のものを 'plugins_loaded'フックにラップすることなく、プラグイン関連のものがないかチェックすることはできません。 すべてのプラグインがロードされるたびに 'plugins_loaded'フックがトリガされるため、すべての定数とクラスが存在します。プラグインは依存できない順序でロードされます。アルファベット順ではありません。 https://codex.wordpress.org/Plugin_API/Action_Reference/plugins_loadedを参照してください - YopeからJipを助けてくれることを願っています。 – moorscode

+0

答えた@hackedファイル –

答えて

0

あなたの機能は、おそらくYOASTがロードされる前にWPSEO_VERSIONをチェックしています。次のいずれかのフックを使用して、WPSEO_VERSION定数をチェックする関数を実行してみてください。

add_action('init', 'active'); 

add_action('plugins_loaded', 'active'); 
+0

私は提供されたコードで作業しようとしましたが、動作させる方法を理解できないようです。多分例を挙げることはできますか? –

+0

関数ファイル全体をgist.comに置くと、私はそれを見直します。 – Fencer04

関連する問題