2016-07-26 152 views
2

我想檢查一下Yoast SEO是否安裝在WordPress中。我在我的測試環境中啓動了Yoast SEO,但沒有解決問題。WordPress:檢查插件是否安裝

WP-SEO-main.php Yoast的,還有該行第16行:

define('WPSEO_VERSION', '3.4'); 

所以我想,這是一個好線,檢查是否安裝Yoast和運行,因此我做了:

if (defined('WPSEO_VERSION')) { 
    echo '<script>alert("Yes, defined");</script>'; 
} else { 
    echo '<script>alert("No, undefined");</script>'; 
} 

但它給了我「不,未定義」。多麼奇怪,因爲它應該被定義。

有人有想法嗎?我完全沒有想法。

+0

嘗試看看插件是否處於活動狀態。這裏有一篇很好的文章,它以多種方式檢查:http://queryloop.com/detect-wordpress-plugin-is-active/ –

+0

請牢記wordpress.stackexchange.com以及您的問題可能更適合 – YakovL

+0

@YakovL是的,但我認爲這是更多的PHP相關的事情,但事實證明,它有它的WordPress功能。 –

回答

2

檢查插件是否被激活。

注意:在wp-admin/includes/plugin.php中定義,因此只能在管理頁面中使用,並且對此函數的任何引用都必須掛鉤到admin_init或更高版本的操作。如果要使用此功能從模板中,您將需要手動要求plugin.php,一個例子是下面 使用

Admin area 
<?php 
/** 
* Detect plugin. For use in Admin area only. 
*/ 
if (is_plugin_active('plugin-directory/plugin-file.php')) { 
    //plugin is activated 
} 


Front end 
<?php 
/** 
* Detect plugin. For use on Front End only. 
*/ 
include_once(ABSPATH . 'wp-admin/includes/plugin.php'); 

// check for plugin using plugin name 
if (is_plugin_active('plugin-directory/plugin-file.php')) { 
    //plugin is activated 
} 

Reference Page

3

或者無需額外包裹,前端或後端:

if(in_array('wordpress-seo/wp-seo.php', apply_filters('active_plugins', get_option('active_plugins')))){ 
    // do stuff only if Yoast is installed and active 
} 

適用於任何插件,只是看着你plugins文件夾爲你的目標:plugin-folder/plugin-index-name.php其中後者shuld居民插件細節在文件的頂部。

0

受Jonas Lundman的回答的啓發,我寫了這個來處理Yoast溢價活躍時的情況。

private function isYoastActive(){ 
    $active_plugins = apply_filters('active_plugins', get_option('active_plugins')); 
    foreach($active_plugins as $plugin){ 
     if(strpos($plugin, 'wp-seo')){ 
      return true; 
     } 
    } 
    return false; 
}