wordpress no puede sacar de la cola el script/estilo que tiene una consulta

3 minutos de lectura

avatar de usuario
CI_Guy

No estoy seguro si lo redacté correctamente, pero básicamente quería cargar el complemento CSS/JS solo en las páginas que usan los complementos reales. He logrado mucho al buscar a través de los archivos del complemento cualquier identificador utilizado en wp_enqueue_script dentro de los complementos y simplemente wp_dequeue_script ellos en functions.php

Sin embargo, hay algunas colas para el estilo que incluyen un archivo .php y no un archivo css, por ejemplo… en el complemento se pone en cola un archivo

wp_enqueue_style("myrp-stuff", MYRP_PLUGIN_URL . "/myrp-hotlink-css.php");

así que he intentado:

wp_dequeue_style('myrp-stuff');
wp_deregister_style('myrp-stuff');

no funciona

Sin embargo, cuando se procesa la página/publicación, se muestra como

<link rel="stylesheet" id='myrp-stuff-css'  href="http://www.modernlogic.co/wp/wp-content/plugins/MyRP/myrp-hotlink-css.php?ver=3.4.2" type="text/css" media="all" />

Agrega -css a la identificación y se niega a eliminar/cancelar el registro y ser movido.

También he intentado lo siguiente sin suerte

wp_dequeue_style('myrp-stuff-css');
wp_deregister_style('myrp-stuff-css');

¿Alguna sugerencia?

  • Me encantaría que alguien pudiera ayudarme con esto 🙁

    – CI_Guy

    18 de septiembre de 2012 a las 13:42

avatar de usuario
poderes de sotavento

Los scripts y estilos se pueden poner en cola en cualquier orden y en cualquier momento antes wp_print_* se desencadenan acciones. Lo que puede dificultar su eliminación de la cola antes de la salida.

Para hacer que el dequeue funcione consistentemente, enganche en wp_print_styles o wp_print_scripts con una prioridad alta, ya que esto eliminará los scripts y estilos justo antes de la salida.

Por ejemplo, en el código del cargador de complementos o en la plantilla functions.php archivo, podría tener una función y un gancho de acción como este:

function remove_assets() {
    wp_dequeue_style('myrp-stuff');
    wp_deregister_style('myrp-stuff');
}
add_action( 'wp_print_styles', 'remove_assets', PHP_INT_MAX );

Establecer un alto priority (tercer argumento a add_action) al conectarse a la acción ayudará a garantizar que la devolución de llamada remove_assets se llama ultimojusto antes de que se impriman los scripts/estilos.

Tenga en cuenta que, si bien esta técnica es legítima para quitando scripts/estilos para los que no debería usarse agregando activos. Mira esto Publicación de blog de WordPress Core para más información.

  • Woh, gracias leepowers, he tenido problemas con la eliminación de secuencias de comandos muchas veces… ¡esto realmente funcionó!

    – Adal

    22 mayo 2013 a las 20:01

  • Problema resuelto para mí también. +1

    – Hoshts

    23 de febrero de 2014 a las 23:38

  • Te debo una cerveza, @leepowers

    – cabgfx

    17/07/2014 a las 20:56

  • Gracias ! Estuve atascado durante mucho tiempo y luego esto resolvió mi problema. La mejor manera de eliminar el css incluido en los complementos.

    – roshan

    06/03/2016 a las 18:24

  • Me gustaría agregar que podría usar las constantes predefinidas de PHP: PHP_INT_MAX para que nunca tenga que poner algo usted mismo. De esta manera, siempre usará el número entero más alto posible en la compilación actual de PHP.

    – Remzi Cavdar

    11 de diciembre de 2018 a las 10:27

Solo para estar seguro, ¿ha colocado su código dentro de una función llamada por una acción como esta?:

add_action('wp_enqueue_scripts', 'dequeue_function');
function dequeue_function() {
    wp_dequeue_style( array('myrp-stuff', 'myrp-stuff-css') );
    wp_deregister_style( array('myrp-stuff', 'myrp-stuff-css') );
}

¿Ha sido útil esta solución?