¿Es posible preestablecer el contenido de un widget mediante un script de plugin?

16 dic 2010, 00:43:10
Vistas: 813
Votos: 0

Este plugin es una prueba simple para ver si puedo llenar dinámicamente un área de widget preexistente con texto. En este caso, mi tema ha creado el área de widget "home-header-widget" y estoy intentando poblarla con el contenido de 'text' a continuación. Me quedo atascado en la línea...

$sidebars_widgets[$sidebar_id] = "widget_text-".$id;

En que no estoy seguro de cómo obtener una referencia al objeto de widget de texto creado dinámicamente para preestablecer su contenido y colocarlo dentro de mi 'home-header-widget'...

<?php
/*
Plugin Name: Prueba de Widget
*/
function cb_activate_widgettest(){

$sidebar_id = 'home-header-widget';
$sidebars_widgets = get_option('sidebars_widgets');
$id = count($opts)+1;
$sidebars_widgets[$sidebar_id] = array("text-".$id);

$ops = get_option('widget_text');
// encontrar un $id que funcione...
$ops[$id] = array(
  'title' => 'foo hoo',
  'text' => 'bar mitz', // ¿contenido?
);
update_option('widget_text', $ops); 
update_option('sidebars_widgets', $sidebars_widgets);

}

register_activation_hook(__FILE__, 'cb_activate_widgettest');
?>
0
Todas las respuestas a la pregunta 2
1

Hay algunos errores en tu código:

  1. Necesitas especificar manualmente el ID de la instancia, por ejemplo 2. Si quieres añadir un widget de texto, y no sobrescribir los contenidos de la barra lateral, entonces prueba usando $id = count($opts)+1, o simplemente podrías generar un ID aleatorio.

  2. Usa el formato widget_ID_base-ID_instancia en $sidebars_widgets[$sidebar_id] = "widget_text-".$id;, y colócalo dentro de un array:

    $sidebars_widgets[$sidebar_id] = array("text-".$id);

16 dic 2010 05:10:28
Comentarios

@OTP: Eso lo solucionó. Gracias por tu ayuda. He actualizado mi pregunta con el código corregido.

Scott B Scott B
13 mar 2011 04:58:12
0

¿Cómo preconfigurar un widget de barra lateral con contenido predeterminado mediante script?
¿Cómo agregar múltiples copias de un widget desde "widgets disponibles"?
https://wordpress.stackexchange.com/questions/5282/code-to-dynamically-populate-a-widget-with-preset-content

Este es tu cuarto tema sobre configuración de widgets, ¿no se podría haber tratado esto en línea con cualquiera de tus otros temas sobre widgets?

Siento que estos temas sobre widgets están empezando a volverse un poco repetitivos.

16 dic 2010 13:54:26