Enganchar en el bucle de salida del widget

2

Cuando la barra lateral de wordpress genera un registered sidebar en particular, recorre todos los widgets que se asignaron a través de él y lo genera (supongo). Es posible conectarse al bucle y agregar contenido, por ejemplo, Quiero agregar un código de anuncio cada tres widgets .

¿Qué he intentado? No se pueden encontrar pistas. Intenté buscar en el código fuente de wordpress pero no estoy seguro de qué buscar. la búsqueda de widget o widget loop no ayuda.

    
pregunta Sisir 21.04.2013 - 22:08

2 respuestas

3

Enganche en 'dynamic_sidebar' y cuenta la frecuencia con la que se llama.

Obtienes la barra lateral activa actual con key( $GLOBALS['wp_registered_sidebars'] ) .

add_action( 'dynamic_sidebar', 'wpse_96681_hr' );

function wpse_96681_hr( $widget )
{
    static $counter = 0;

    // right sidebar in Twenty Ten. Adjust to your needs.
    if ( 'primary-widget-area' !== key( $GLOBALS['wp_registered_sidebars'] ) )
        return;

    if ( 0 !== $counter && 0 === $counter % 3 )
        print '<hr>';

    $counter += 1;
}
    
respondido por el fuxia 21.04.2013 - 22:17
1

Casi lo mismo que el de toscho pero hice una clase.

class SideBar_Inserter {
  static $count = 0;

  function __construct() {
    add_action( 'dynamic_sidebar', array($this,'insert_into_sidebar') );
  }

  function insert_into_sidebar($s) {
    if (static::$count !== 0 && static::$count%3 === 0) {
      echo static::$count;
    }
    static::$count++;
  }
}
$sidebar_inserter = new SideBar_Inserter;

Esto está probado. Funciona.

    
respondido por el s_ha_dum 21.04.2013 - 22:28

Lea otras preguntas en las etiquetas