settings = $settings; add_action( 'wp_dashboard_setup', [ $this, 'register_rss_feeds' ] ); } /** * Register RSS Feeds for Element Pack */ public function register_rss_feeds() { if ( self::$feed_displayed ) { /** * If the feed has already been displayed, do not add it again */ return; } wp_add_dashboard_widget( 'bdt-dashboard-overview', esc_html( $this->settings['feed_title'] ), [ $this, 'display_rss_feeds_content' ], null, null, 'column4', 'core' ); /** * Mark the feed as displayed */ self::$feed_displayed = true; } /** * Display RSS Feeds Content */ public function display_rss_feeds_content() { echo wp_kses_post( $this->get_rss_posts_data() ); } /** * Get RSS Posts Data * * @return string */ private function get_rss_posts_data() { $transient_key = $this->settings['transient_key'] . '_rss'; $cached_data = get_transient( $transient_key ); if ( ! empty( $cached_data ) ) { /** * Decode as associative array */ $rss_items = json_decode( $cached_data, true ); } else { include_once ABSPATH . WPINC . '/feed.php'; $rss = fetch_feed( $this->settings['feed_link'] ); if ( is_wp_error( $rss ) ) { return '
  • ' . esc_html__( 'Items Not Found', 'ultimate-post-kit' ) . '.
  • '; } $maxitems = $rss->get_item_quantity( 5 ); $rss_items = $rss->get_items( 0, $maxitems ); /** * Convert RSS items to a simpler array to avoid serialization issues */ $simplified_rss_items = array_map( function ($item) { return [ 'title' => $item->get_title(), 'link' => $item->get_permalink(), 'date' => $item->get_date( 'U' ), 'content' => $item->get_content(), ]; }, $rss_items ); set_transient( $transient_key, json_encode( $simplified_rss_items ), 6 * HOUR_IN_SECONDS ); $rss_items = $simplified_rss_items; } ob_start(); ?>
    = $cutoff; } } // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- local settings array for this admin feed file. $settings = array( 'feed_title' => 'BdThemes News & Updates', 'transient_key' => 'bdthemes_product_feeds', 'feed_link' => 'https://bdthemes.com/feed', 'text_domain' => 'bdthemes', 'footer_links' => [ [ 'url' => 'https://bdthemes.com/blog/', 'title' => 'Blog', ], [ 'url' => 'https://bdthemes.com/knowledge-base/', 'title' => 'Docs', ], [ 'url' => 'https://store.bdthemes.com/', 'title' => 'Get Pro', ], [ 'url' => 'https://feedback.elementpack.pro/announcements/', 'title' => 'Changelog', ], ], ); /** * The dashboard news widget contacts an external BdThemes server, so it is strictly * opt-in: it stays disabled until the site administrator enables "BdThemes News & * Updates" under Ultimate Post Kit > Other Settings. No request is made otherwise. */ if ( 'on' === \ultimate_post_kit_option( 'news_feed', 'ultimate_post_kit_other_settings', 'off' ) ) { new Admin_Feeds( $settings ); }