WordPress.org

Make WordPress Core

Ticket #50139: 50139-add-wptv-dashboard-widget.diff

File 50139-add-wptv-dashboard-widget.diff, 2.5 KB (added by psykro, 17 months ago)
  • src/wp-admin/includes/dashboard.php

    diff --git a/src/wp-admin/includes/dashboard.php b/src/wp-admin/includes/dashboard.php
    index c7edaf6c08..80f40edb84 100644
    a b function wp_dashboard_setup() { 
    7979        // WordPress Events and News.
    8080        wp_add_dashboard_widget( 'dashboard_primary', __( 'WordPress Events and News' ), 'wp_dashboard_events_news' );
    8181
     82        // WordPress.tv.
     83        wp_add_dashboard_widget( 'dashboard_wp_tv', __( 'Latest videos from WordPress.tv' ), 'wp_dashboard_wp_tv' );
     84
    8285        if ( is_network_admin() ) {
    8386
    8487                /**
    function wp_dashboard_primary_output( $widget_id, $feeds ) { 
    15101513        }
    15111514}
    15121515
     1516
     1517/**
     1518 * 'WordPress.tv' dashboard widget.
     1519 *
     1520 * @since 5.4.2
     1521 */
     1522function wp_dashboard_wp_tv() {
     1523        ?>
     1524        <div class="wordpress-tv hide-if-no-js">
     1525                <?php echo wp_dashboard_wp_tv_render(); ?>
     1526        </div>
     1527        <?php
     1528}
     1529
     1530/**
     1531 * Render 'WordPress.tv' dashboard widget
     1532 *
     1533 * @since 5.4.2
     1534 *
     1535 * @return string
     1536 */
     1537function wp_dashboard_wp_tv_render() {
     1538        $feeds = array(
     1539                        'news' => array(
     1540                                        'link'         => apply_filters( 'wp_tv_dashboard_primary_link', __( 'https://wordpress.tv/feed' ) ),
     1541                                        'url'          => apply_filters( 'wp_tv_dashboard_secondary_feed', __( 'https://wordpress.tv/feed' ) ),
     1542                                        'title'        => apply_filters( 'wp_tv_dashboard_primary_title', __( 'WordPress.tv' ) ),
     1543                                        'items'        => 8,
     1544                                        'show_summary' => 0,
     1545                                        'show_author'  => 0,
     1546                                        'show_date'    => 0,
     1547                        ),
     1548        );
     1549
     1550        return wp_dashboard_wp_tv_output( 'dashboard_wp_tv', $feeds );
     1551}
     1552
     1553/**
     1554 * Generate the dashboard widget content
     1555 *
     1556 * @since 5.4.2
     1557 *
     1558 * @param $widget_id
     1559 * @param $feeds
     1560 *
     1561 * @return string the RSS feed output
     1562 */
     1563function wp_dashboard_wp_tv_output( $widget_id, $feeds ) {
     1564        /**
     1565         * Check if there is a cached version of the RSS Feed and output it
     1566         */
     1567        $locale    = get_user_locale();
     1568        $cache_key = 'wp_tv_dash_' . md5( $widget_id . '_' . $locale );
     1569        $rss_output    = get_transient( $cache_key );
     1570        if ( false !== $rss_output ) {
     1571                return $rss_output;
     1572        }
     1573        /**
     1574         * Get the RSS Feed contents
     1575         */
     1576        ob_start();
     1577        foreach ( $feeds as $type => $args ) {
     1578                $args['type'] = $type;
     1579                echo '<div class="rss-widget">';
     1580                wp_widget_rss_output( $args['url'], $args );
     1581                echo '</div>';
     1582        }
     1583        $rss_output = ob_get_clean();
     1584        /**
     1585         * Set up the cached version to expire in 12 hours and output the content
     1586         */
     1587        set_transient( $cache_key, $rss_output, 12 * HOUR_IN_SECONDS );
     1588        return $rss_output;
     1589}
     1590
    15131591/**
    15141592 * Displays file upload quota on dashboard.
    15151593 *