Dashboard: Update the existing WordPress News dashboard widget to also include upcoming meetup events and WordCamps near the current user’s location.
Props @afercia, @andreamiddleton, @azaozz, @camikaos, @coreymckrill, @chanthaboune, @courtneypk, @dd32, @iandunn, @iseulde, @mapk, @mayukojpn, @melchoyce, @nao, @obenland, @pento, @samuelsidler, @stephdau, @tellyworth. See #40702. Built from https://develop.svn.wordpress.org/trunk@40607 git-svn-id: http://core.svn.wordpress.org/trunk@40477 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -1294,6 +1294,88 @@ function wp_dashboard_secondary() {}
|
||||
*/
|
||||
function wp_dashboard_secondary_control() {}
|
||||
|
||||
/**
|
||||
* Display plugins text for the WordPress news widget.
|
||||
*
|
||||
* @since 2.5.0
|
||||
* @deprecated 4.8.0
|
||||
*
|
||||
* @param string $rss The RSS feed URL.
|
||||
* @param array $args Array of arguments for this RSS feed.
|
||||
*/
|
||||
function wp_dashboard_plugins_output( $rss, $args = array() ) {
|
||||
_deprecated_function( __FUNCTION__, '4.8.0' );
|
||||
|
||||
// Plugin feeds plus link to install them
|
||||
$popular = fetch_feed( $args['url']['popular'] );
|
||||
|
||||
if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) {
|
||||
$plugin_slugs = array_keys( get_plugins() );
|
||||
set_transient( 'plugin_slugs', $plugin_slugs, DAY_IN_SECONDS );
|
||||
}
|
||||
|
||||
echo '<ul>';
|
||||
|
||||
foreach ( array( $popular ) as $feed ) {
|
||||
if ( is_wp_error( $feed ) || ! $feed->get_item_quantity() )
|
||||
continue;
|
||||
|
||||
$items = $feed->get_items(0, 5);
|
||||
|
||||
// Pick a random, non-installed plugin
|
||||
while ( true ) {
|
||||
// Abort this foreach loop iteration if there's no plugins left of this type
|
||||
if ( 0 == count($items) )
|
||||
continue 2;
|
||||
|
||||
$item_key = array_rand($items);
|
||||
$item = $items[$item_key];
|
||||
|
||||
list($link, $frag) = explode( '#', $item->get_link() );
|
||||
|
||||
$link = esc_url($link);
|
||||
if ( preg_match( '|/([^/]+?)/?$|', $link, $matches ) )
|
||||
$slug = $matches[1];
|
||||
else {
|
||||
unset( $items[$item_key] );
|
||||
continue;
|
||||
}
|
||||
|
||||
// Is this random plugin's slug already installed? If so, try again.
|
||||
reset( $plugin_slugs );
|
||||
foreach ( $plugin_slugs as $plugin_slug ) {
|
||||
if ( $slug == substr( $plugin_slug, 0, strlen( $slug ) ) ) {
|
||||
unset( $items[$item_key] );
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
|
||||
// If we get to this point, then the random plugin isn't installed and we can stop the while().
|
||||
break;
|
||||
}
|
||||
|
||||
// Eliminate some common badly formed plugin descriptions
|
||||
while ( ( null !== $item_key = array_rand($items) ) && false !== strpos( $items[$item_key]->get_description(), 'Plugin Name:' ) )
|
||||
unset($items[$item_key]);
|
||||
|
||||
if ( !isset($items[$item_key]) )
|
||||
continue;
|
||||
|
||||
$raw_title = $item->get_title();
|
||||
|
||||
$ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $slug, 'install-plugin_' . $slug) . '&TB_iframe=true&width=600&height=800';
|
||||
echo '<li class="dashboard-news-plugin"><span>' . __( 'Popular Plugin' ) . ':</span> ' . esc_html( $raw_title ) .
|
||||
' <a href="' . $ilink . '" class="thickbox open-plugin-details-modal" aria-label="' .
|
||||
/* translators: %s: plugin name */
|
||||
esc_attr( sprintf( __( 'Install %s' ), $raw_title ) ) . '">(' . __( 'Install' ) . ')</a></li>';
|
||||
|
||||
$feed->__destruct();
|
||||
unset( $feed );
|
||||
}
|
||||
|
||||
echo '</ul>';
|
||||
}
|
||||
|
||||
/**
|
||||
* This was once used to move child posts to a new parent.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user