• Resuelto fernanf

    (@fernanf)


    Buenas tardes:

    En ficheros php de wordpress y relacionado con widgets, existen funciones en el código de este tipo:

    if ( is_active_sidebar( 'above-header-right' ) ) :
    				dynamic_sidebar( 'above-header-right' );
    				endif;

    Es decir, si el widget está activo, se ejecuta la función.

    Mi pregunta es, ¿con qué código se sabe si un widget está activo o no? es decir, ¿cómo sabe la función anterior (a nivel de código) si un widget está activo o no?

    Gracias

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • Moderador almendron

    (@almendron)

    Puedes ver la función en Code Reference.

    • Esta respuesta fue modificada hace 6 años por almendron.
    cybmeta

    (@cybmeta)

    Lo que hace ese código no es comprobar si un widget está activo, sino comprobar si un sidebar determinado tiene algún widget activo, y lo hace con la función wp_get_sidebars_widgets().

    Si quieres comprobar si un widget en concreto está activo, puedes utilizar is_active_widget().

    • Esta respuesta fue modificada hace 6 años por cybmeta.
    Iniciador del debate fernanf

    (@fernanf)

    No estoy tratando de ver una función que compruebe si un widget concreto está activo o no, lo que necesito saber es qué pasa a nivel de código cuando un widget está activo (o no activo), esto es, qué elemento de código se marca cuando un widget lo está.

    Gracias

    cybmeta

    (@cybmeta)

    Los widgets se asocian a sidebars y ya está, no hay nada que los marque como activos o inactivos de forma específica. Si un sidebar tiene algún widget asociado, entonces el widget y el sidebar están activos. A mi entender, no puedes tener un widget inactivo en un sidebar, no existe ese concepto en WordPress.

    Con la notable excepción del sidebar wp_inactive_widgets. Los widgets asociados a este sidebar se interpretan como inactivos, pero en verdad no están marcados de ninguna forma especial, ni a nivel de código ni a nivel de base de datos. Solo que están asociados a ese sidebar «especial».

    Espero que esto responda a tu duda.

    Iniciador del debate fernanf

    (@fernanf)

    pero cuando arrastro un widget de la zona de inactivos a la de activos, ¿qué ocurre a nivel de código?
    Gracias

    cybmeta

    (@cybmeta)

    Al arrastrar un widget «nuevo» a un sidebar (sea cual sea el sidebar), o si pulsas el botón «Guardar» en un widget ya existente, se ejecuta esta función: https://developer.wordpress.org/reference/functions/wp_ajax_save_widget/

    Si mueves un widget de un sidebar a otro (sean cuales sean los sidebars), o lo cambias de posición dentro de un mismo sidebar, se ejecuta esta función: https://developer.wordpress.org/reference/functions/wp_ajax_widgets_order/

    Ambas utilizan wp_set_sidebars_widgets() para guardar los sidebars y los widgets correspondientes.

    Lo importante para diferenciar widgets inactivos del resto es saber que la zona «inactivos» es un sidebar más como cualquier otro y que el identificador de este sidebar es wp_inactive_widgets.

    Lo siento pero no soy capaz de darte una respuesta más específica, después de varias preguntas y respuestas no estoy seguro entender bien lo que buscas. Igual podrías poner un ejemplo de los que quieres hacer, el código que intentas utilizar y el resultado que esperas obtener de ese código pero no consigues, creo que así te podríamos responder mejor.

    Moderador almendron

    (@almendron)

    Doy por resuelto el hilo ya que @cybmeta ha ofrecido las correspondientes explicaciones.

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • El debate ‘Código activación widget’ está cerrado a nuevas respuestas.