Wie überprüfe ich, ob das WordPress-Plugin installiert und aktiviert ist?

Lesezeit: 5 Minuten

Benutzeravatar von J. Doe
J. Doe

Ich möchte überprüfen, ob Yoast SEO in WordPress installiert ist. Ich habe Yoast SEO in meiner Testumgebung aktiviert, aber es funktioniert nicht.

Im wp-seo-main.php von Yoast gibt es diese Zeile in Zeile 16:

define( 'WPSEO_VERSION', '3.4' );

Also dachte ich, das ist eine gute Zeile, um zu überprüfen, ob Yoast installiert ist und läuft, also habe ich es getan:

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

Aber es gibt mir “Nein, undefiniert”. Wie seltsam, denn es sollte definiert werden.

Hat jemand eine Idee? Ich bin total ideenlos.

  • Denken Sie auch an wordpress.stackexchange.com, Ihre Frage ist dort möglicherweise besser geeignet

    – Jakow L

    26. Juli 2016 um 18:03 Uhr

  • @YakovL Ja, aber ich dachte, das wäre eher eine PHP-bezogene Sache, aber es stellt sich heraus, dass es WordPress-Funktionen dafür gibt.

    – J. Reh

    26. Juli 2016 um 18:17 Uhr

  • Bitte überprüfen Sie meine Funktion. Es enthält viel, um einen guten und stabilen Check mit wp-Funktionen durchzuführen!

    – Herr Jo

    14. September 2020 um 7:39 Uhr

  • ist Die relevante Frage hier ist, wenn Yoast installiert ist und läuft oder nur “installiert”? Letzteres frage ich mich Wann müssen wir wissen, ob sich ein inaktives Plugin im Plugin-Ordner befindet? Ich nehme an, wie in der Frage “… und Laufen” geschrieben, sind die Antworten, die wir geben sollten.

    – Jonas Lundmann

    19. Mai 2021 um 7:29 Uhr


Benutzeravatar von Jonas Lundman
Jonas Lundman

Oder ohne zusätzliche Einschlüsse, Frontend oder Backend:

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
}

Funktioniert mit jedem Plugin, schauen Sie einfach in Ihre Plugins-Ordner für dein Ziel: plugin-folder/plugin-index-name.php wobei letzteres die Plugin-Details oben in der Datei enthalten sollte.

Bitte überprüfen Sie Doc. Hinweis

  • Das stimmt nicht!!!!! Dies prüft, ob ein Plugin aktiv ist. Wenn es inaktiv, aber installiert ist, wird es hier nicht angezeigt.

    – Herr Jo

    12. September 2020 um 16:09 Uhr

  • @Mr.Jo die Frage ist mehr als der “Stackoverflow-Titel”. Da die Lösung für die Suche nach dem Themenkontext “eine gute Zeile ist, um zu überprüfen, ob Yoast installiert ist und ausgeführt wird …”, ist die Antwort daher richtig.

    – Jonas Lundmann

    13. September 2020 um 18:32 Uhr

  • Ja, es ist richtig, um zu überprüfen, ob es aktiv ist, aber nicht, um zu überprüfen, ob es installiert ist. Ich werde unten eine richtige Antwort posten, um beides auf die richtige Weise zu überprüfen …

    – Herr Jo

    14. September 2020 um 6:29 Uhr

Mike Morris - Benutzeravatar von MBXSW
Mike Morris – MBXSW

Inspiriert von Jonas Lundmans Antwort habe ich dies geschrieben, um auch zu handhaben, wenn Yoast Premium aktiv ist.

function is_yoast_active() {
    $active_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );

    foreach ( $active_plugins as $plugin ) {
        if ( strpos( $plugin, 'wp-seo' ) ) {
            return true;
        }
    }

    return false;
}

Benutzeravatar von Naymul Hasan Tanvir
Naymul Hasan Tanvir

$all_plugins = get_plugins();

//print_r( $all_plugins );

if( array_key_exists( 'woolementor/woolementor.php', $all_plugins ) ){

     //do something
}

Danke an alle anderen für die bisher gute Arbeit! Aber bei der Frage geht es auch um eine Überprüfung, ob ein Plugin installiert ist, und alle Ihre Antworten beziehen sich nur darauf, zu überprüfen, ob ein Plugin aktiv ist.

Also ging ich zu meinem Spielplatz und entwickelte einen korrekten Check, den ich Ihnen zeigen möchte, indem ich die bereits bereitgestellten Funktionen von WP verwendete.

// Check if needed functions exists - if not, require them
if ( ! function_exists( 'get_plugins' ) || ! function_exists( 'is_plugin_active' ) ) {
    require_once ABSPATH . 'wp-admin/includes/plugin.php';
}

/**
 * Checks if Yoast SEO is installed
 *
 * @return bool
 */
function is_wp_seo_installed(): bool {
    if ( check_plugin_installed( 'wordpress-seo/wp-seo.php' ) ) {
        return true;
    }

    return false;
}

/**
 * Check if Yoast SEO is activated
 *
 * @return bool
 */
function is_wp_seo_active(): bool {
    if ( check_plugin_active( 'wordpress-seo/wp-seo.php' ) ) {
        return true;
    }

    return false;
}

/**
 * Check if plugin is installed by getting all plugins from the plugins dir
 *
 * @param $plugin_slug
 *
 * @return bool
 */
function check_plugin_installed( $plugin_slug ): bool {
    $installed_plugins = get_plugins();

    return array_key_exists( $plugin_slug, $installed_plugins ) || in_array( $plugin_slug, $installed_plugins, true );
}

/**
 * Check if plugin is installed
 *
 * @param string $plugin_slug
 *
 * @return bool
 */
function check_plugin_active( $plugin_slug ): bool {
    if ( is_plugin_active( $plugin_slug ) ) {
        return true;
    }

    return false;
}

Wie Sie sehen können, habe ich zwei separate Funktionen geschrieben, um zu überprüfen, ob Yoast SEO ist installiert und aktiv, also muss ich es nur aufrufen und den Rückgabeparameter überprüfen:

$installed = is_wp_seo_installed();
$active    = is_wp_seo_active();

if ( $installed && $active ) {
    echo 'WP SEO is installed and active!';
} else {
    echo 'WP SEO is not installed or active!';
}

Wer diese beiden Extrafunktionen aber überspringen möchte, kann die beiden Prüffunktionen direkt aufrufen:

$installed = check_plugin_installed( 'wordpress-seo/wp-seo.php' );
$active    = check_plugin_active( 'wordpress-seo/wp-seo.php' );

if ( $installed && $active ) {
    echo 'Yoast SEO is installed and active!';
} else {
    echo 'Yoast SEO is not installed or active!';
}

Ich hoffe, dies hilft Ihnen dabei, eine gute installierte und aktive Prüfung durchzuführen!

Benutzeravatar von Dmitry
Dmitri

Verwenden Sie den folgenden Code:

 <?php include_once ABSPATH . 'wp-admin/includes/plugin.php'; ?>
 <?php if ( is_plugin_active( 'wordpress-seo/wp-seo.php' ) ) :

      //do staff

 <?php endif; ?>

  • Dies ist nur eine Kopie der akzeptierten Antwort, die 2 Jahre später hinzugefügt wird.

    – cavameta

    13. September 2020 um 18:37 Uhr

Benutzeravatar von Het Shah
Het Shah

Das hat bei mir funktioniert.

if(count(
        preg_grep(
            '/^wordpress-seo.*\/wp-seo.php$/',
            apply_filters('active_plugins', get_option('active_plugins'))
        )
    ) != 0
){
    // Plugin activated
}

  • Dies ist nur eine Kopie der akzeptierten Antwort, die 2 Jahre später hinzugefügt wird.

    – cavameta

    13. September 2020 um 18:37 Uhr

Benutzeravatar von Yusuf Çalışkan
Yusuf Çalışkan

Aktivieren Sie dies, um alle aktiven Plugin-Namen zu erhalten;

$callback = function($key){
    $key = explode("https://stackoverflow.com/", $key);
    return $key[0];                                        
}

$active_plugins = array_map($callback, get_option( 'active_plugins' ) );

1438170cookie-checkWie überprüfe ich, ob das WordPress-Plugin installiert und aktiviert ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy