WordPress: compruebe si el complemento está instalado (ACF)

2 minutos de lectura

avatar de usuario
José

quiero prevenir fatal error en mi tema si el complemento ACF está desactivado o no instalado.

La función principal del plugin es get_field(). Escribí este código en mi functions.php verificar:

if ( !function_exists('get_field') ) {
  function get_field() {
    echo '<span>plugin ACF is not installed</span>';
  }
}

Por favor, dígame que esta es una práctica aceptable.

ACF mismo utiliza una verificación para ver si el marco se ha cargado. Si ya ha sido incluido e invocado por otro complemento o tema, entonces ACF no volverá a crear una instancia de su propia clase. Lo hace con una verificación de clase:

if (!class_exists('ACF')) {
    //  The ACF class doesn't exist, so you can probably redefine your functions here
}

Utilizo exactamente esto en mis propios complementos que dependen de la presencia de ACF para que, si se desactiva, todo el sitio no explote.

En primer lugar, esta no es la función principal del complemento, solo una de ellas. Probablemente, más comúnmente utilizado por un usuario de complemento en un tema. otro es the_field()que en realidad imprime el valor (get_field() lo devuelve).

Con respecto a la práctica de definir su función personalizada, está bien. Sin embargo, no imprimiría ese mensaje largo en todos los lugares donde se espera el campo ACF; algunos de ellos pueden ser cortos (números) y este mensaje romperá el diseño. Imprimir algo más corto es mejor, en mi opinión.

También, function_exists es el control adecuado, no is_plugin_activeporque ACF también se puede enviar como una biblioteca con un marco de trabajo temático u otro complemento.

Otra opción es eliminar completamente la dependencia de ACF en la interfaz. Puede generar el contenido de los campos con get_post_meta() y evitar que el complemento ACF se cargue en la interfaz por completo. Vea estas dos publicaciones para más detalles:

http://www.billerickson.net/code/disable-acf-frontend/

http://www.billerickson.net/advanced-custom-fields-frontend-dependency/

  • ¡Es bastante genial! Nunca hubiera pensado en esto por su cuenta. Ahora voy a escribir el código un poco mejor calidad. ¡Gracias por tu experiencia!

    – José

    15 de noviembre de 2016 a las 23:12

avatar de usuario
Demasiado grande.

Hay una función de wordpress para eso:

is_plugin_active('advanced-custom-fields/acf.php');

Nota: Es posible que tenga problemas al cambiar a la versión premium de un complemento.

Sí, es una buena manera de verificar si existe la función de complemento.

También puedes probar es_plugin_activo función para verificar si el complemento está activado, porque la función se puede volver a declarar en algún lugar.

Creo que la razón principal por la que está haciendo eso es para evitar errores fatales, por lo que no importa de qué manera pueda usar.

¿Ha sido útil esta solución?