WebHU - Programozási kérdések és válaszok

WordPress: Ellenőrizze, hogy telepítve van-e a bővítmény

Szeretném ellenőrizni, hogy a Yoast SEO telepítve van-e a WordPressben. Aktiváltam a Yoast SEO-t a tesztkörnyezetemben, de nem működik.

A Yoast wp-seo-main.php fájljában ez a sor található a 16. sorban:

define( 'WPSEO_VERSION', '3.4' );

Ezért arra gondoltam, hogy ez egy jó sor annak ellenőrzésére, hogy a Yoast telepítve van-e és fut-e, ezért megtettem:

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

De azt adja nekem, hogy "Nem, meghatározatlan". Milyen furcsa, mert meg kellene határozni.

Van valakinek valami ötlete? Teljesen kifogytam az ötletekből.

26.07.2016

  • tartsd észben a wordpress.stackexchange.com oldalt is, ott lehet a kérdésed megfelelőbb 26.07.2016
  • @YakovL Igen, de azt hittem, hogy ez inkább PHP-vel kapcsolatos dolog, de kiderült, hogy vannak WordPress-függvények is. 26.07.2016
  • Kérem nézze meg a funkciómat. Sokat tartalmaz egy jó és stabil ellenőrzéshez a wp függvények használatával! 14.09.2020
  • A releváns kérdés itt az, hogy a Yoast telepítve van-e és fut vagy csak telepítve van? Ez utóbbira kíváncsi vagyok, hogy Mikor kell tudnunk, hogy egy inaktív bővítmény van-e a plugin mappájában? Tehát úgy gondolom, ahogy a kérdésben is írták, és a futás a válaszokat adnunk kell. 19.05.2021

Válaszok:


1

Vagy extra zárványok nélkül, elülső vagy hátul:

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
}

Bármilyen beépülő modullal működik, csak nézze meg a célt a plugins mappában: plugin-folder/plugin-index-name.php, ahol az utóbbinak a fájl tetején kell lennie a beépülő modul részleteinek.

Kérjük, ellenőrizze Doc. hivatkozás

29.10.2017
  • Ez nem helyes!!!!! Ez ellenőrzi, hogy egy plugin aktív-e. Ha inaktív, de telepítve van, akkor nem jelenik meg itt. 12.09.2020
  • @Mr.Jo a kérdés több, mint a stackoverflow címe. Mivel a témakörön belüli keresési megoldás egy jó vonal annak ellenőrzésére, hogy a Yoast telepítve van-e és fut-e... A válasz tehát helyes. 13.09.2020
  • Igen, ez megfelelő az aktív állapot ellenőrzésére, de nem arra, hogy ellenőrizze, hogy telepítve van-e. Az alábbiakban közzéteszem a helyes választ, hogy ellenőrizzem mindkettő helyességét... 14.09.2020

  • 2

    Jonas Lundman válasza ihlette ezt azért írtam, hogy akkor is kezeljem, amikor a Yoast prémium aktív.

    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;
    }
    
    20.01.2018

    3

    Használja az alábbi kódot:

     <?php include_once ABSPATH . 'wp-admin/includes/plugin.php'; ?>
     <?php if ( is_plugin_active( 'wordpress-seo/wp-seo.php' ) ) :
    
          //do staff
    
     <?php endif; ?>
    
    23.10.2019
  • Ez csak egy másolata az elfogadott válasznak, és 2 évvel később került hozzáadásra. 13.09.2020

  • 4

    Ez az, ami nekem bevált.

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

    5

    A többieknek köszönöm az eddigi jó munkát! De a kérdés az is, hogy ellenőrizze, hogy telepítve van-e egy plugin, és minden válasz csak arra vonatkozik, hogy ellenőrizze, hogy egy plugin aktív-e.

    Így hát elmentem a játszóteremre, és kidolgoztam egy helyes csekket, amit meg akarok mutatni a WP már biztosított funkciók segítségével.

    // 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;
    }
    

    Amint láthatja, két külön függvényt írtam annak ellenőrzésére, hogy a Yoast SEO telepítve van-e és aktív-e, így csak meg kell hívnom, és ellenőrizni kell a visszatérési paramétert:

    $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!';
    }
    

    De ha ki akarja hagyni ezt a két extra funkciót, akkor közvetlenül hívhatja a két ellenőrző függvényt:

    $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!';
    }
    

    Remélem, ez segít egy jó telepített és aktív ellenőrzés elvégzésében!

    14.09.2020
    Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..