I am trying to make a plugin that allows a user to add custom dashboard widgets that feature individual feeds. I am using Advanced Custom Fields and Custom Post Type UI plugins. The user puts in the feed name (feed_name) and the URL of the feed (feed_url) When I run my code, the user can create as many dashboard widgets as they want, but all of the feeds are returning in all of the widgets (the feed_name is working correctly) So what I hope to achieve is each widget has only the feed from the corresponding feed_url.
/** START The News Feed Dashboard Widget */
add_action( 'wp_dashboard_setup', 'dfdw_feed_dashboard_add_widgets' );
function dfdw_feed_dashboard_add_widgets(){
$args = array( 'post_type' => 'dashboard_feed',
'numberposts' => '-1'
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
the_ID();
$feed_name = get_field('feed_name' );
wp_add_dashboard_widget( $feed_name, __( $feed_name ), 'my_cool_widget' );
endwhile;
}
function my_cool_widget() {
$args = array( 'post_type' => 'dashboard_feed',
'numberposts' => '-1'
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$feed_url = get_field('feed_url' );
$feed = array(
array(
'url' => $feed_url,
'items' =>1,
'show_summary' => 1,
'show_author' => 0,
'show_date' => 1,
),
);
ob_start(); // start output buffering
wp_dashboard_primary_output( $feed_name, $feed );
$buffer = ob_get_clean(); // get the buffer without printing the content
// add the target attribute to the a-tag:
$result = str_replace("<a class='rsswidget'",
"<a class='rsswidget' target='_blank'", $buffer);
echo $result;
endwhile;
};