Error fatal: no se puede volver a declarar wp_is_mobile()

3 minutos de lectura

Recibí este error fatal cuando actualicé wordpress a Newest hoy. Uso el tema Barely Corporate. La línea 126 es la última línea del código. ¿Alguien tiene una idea de qué es esto? El tema tiene un diseño receptivo.

http://themeforest.net/item/barely-corporate-responsive-wordpress-theme/93069?WT.ac=search_item&WT.seg_1=search_item&WT.z_author=ThemeBlvd

Error fatal: no se puede volver a declarar wp_is_mobile() (previamente declarado en /home/chilinbk/public_html/kunde/tkh/wp-includes/vars.php:107) en /home/chilinbk/public_html/kunde/tkh/wp-includes/vars .php en la línea 126

if ( isset($is_mobile) )
    return $is_mobile;

if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
    $is_mobile = false;
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.)
    || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
    || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
    || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
    || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
    || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) {
        $is_mobile = true;
} else {
    $is_mobile = false;
}

return $is_mobile;

}

¡Entiendo!

En wp-content\plugins\sitepress-multilingual-cms\sitepress.php, hay las siguientes líneas

if ( function_exists('is_multisite') && is_multisite() ) {
    include_once( ABSPATH . WPINC . '/vars.php' );
}

Estas líneas incluyen el archivo /wp-includes/vars.php donde se declara la función wp_is_mobile(). Luego, WordPress incluye este archivo vars.php nuevamente y produce un error lógico.

Antes del lanzamiento de WP 3.4, no había ningún problema visible ya que no había funciones en vars.php. Pero ahora lo hay.

Creo que wpml no necesita incluir este archivo, ya que WordPress ya lo incluye.

Entonces, un bypass puede ser: líneas de comentario 21-24 en “wp-content\plugins\sitepress-multilingual-cms\sitepress.php”

Espero que WPML pueda solucionarlo de manera más adecuada en la próxima versión del complemento.

  • Gracias. Me encontré con el mismo problema y esto lo solucionó.

    – YonoRan

    24 de junio de 2012 a las 17:19

  • Esto ahora se solucionó con el último complemento v2.5.2 lanzado el 26 de junio.

    –Paul PAYEN

    27 de junio de 2012 a las 10:55

Al no poder ver el código de tu tema, supongo que tu functions.php incluye una declaración de función como esta:

function wp_is_mobile() {
   // ... the code
}

Entonces, lo que tendrá que hacer es envolver esa función, así:

if (function_exists('wp_is_mobile')) {
    function wp_is_mobile() {
       // ... the code
    }
}

O eso o simplemente eliminar el duplicado en el tema y usar la versión en 3.4.

Supongo que su proveedor de temas actualizará ese tema, ese tipo de conflicto es desagradable. Esta es la razón por la que se alienta a los desarrolladores de temas a prefijar sus funciones con algo único. Prefijo todo.

  • ¿Cómo elimino el duplicado en el tema y uso una versión anterior?

    – andrrs

    15 de junio de 2012 a las 7:38

  • Tendrías que editar manualmente functions.php y eliminarlo.

    – artlung

    15 de junio de 2012 a las 7:45

Puede que no sea el tema. en mi caso fue el complemento WPML, pero la función de ajuste hizo el trabajo incluso si modificar el archivo WP principal no es lo ideal…

¡Gracias por la sugerencia anterior!

avatar de usuario
Andy

Tuve el mismo problema una vez que instalé el complemento WPML 2.5.1 en WP 3.4, así que envolví la función y eso eliminó ese error, luego recibí otro error.

Error fatal: llamada a la función no definida wp_is_mobile() en /home/MY_USERNAME/public_html/wp-includes/theme.php en la línea 1606

¿No sé qué hacer a continuación?

——–Encontré un trabajo alrededor———

Siempre que no active en red los complementos de WPML como superadministrador en la instalación multisitio de WP, no obtendré el error. Actívelos de forma independiente.

Todavía sería bueno si la activación de la red pudiera funcionar. WPML dice que es compatible con varios sitios: http://wpml.org/documentation/support/multisite-support/

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad