I ended up figuring this out on my own, and without a filter as described in the docs. In my case, I was using the widget API ‘foo’ example from codex. if you are following along and have similar issues use:
$args[‘widget_id’]
As the widget id. It wants the id of the instance, not just the widget itself. A fuller example using a repeater:
public function widget( $args, $instance ) {
echo $args['before_widget'];
if ( ! empty( $instance['title'] ) ) {
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
}
if ( have_rows( 'some_fields', 'widget_' . $args['widget_id'] ) ) {
while ( have_rows( 'some_fields', 'widget_' . $args['widget_id'] ) ) {
the_row();
// do stuff in here
}
}
echo $args['after_widget'];
}