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() { $feeds = $this->get_remote_feeds_data(); if ( is_array( $feeds ) ) { foreach ( $feeds as $feed ) { ?>
get_rss_posts_data() ); } /** * Get Remote Feeds Data * * @return array|mixed */ private function get_remote_feeds_data() { $transient_key = $this->settings['transient_key']; $cached_data = get_transient( $transient_key ); if ( ! empty( $cached_data ) ) { return json_decode( $cached_data ); } $response = wp_remote_get( $this->settings['remote_feed_link'], array( 'timeout' => 30, 'headers' => array( 'Accept' => 'application/json', ), ) ); if ( is_wp_error( $response ) ) { return []; } $response_body = wp_remote_retrieve_body( $response ); set_transient( $transient_key, $response_body, 6 * HOUR_IN_SECONDS ); return json_decode( $response_body ); } /** * 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 '