WordPress: creare un aggregatore di feed RSS

WordPress: creare un aggregatore di feed RSS

I feed RSS sono una funzionalità presente in tutti i moderni siti web. In questo articolo vedremo come creare un aggregatore di feed RSS in WordPress utilizzando i custom post type e le funzioni per il parsing RSS di cui dispone questo CMS.

Creare il custom post type per i feed

Come prima cosa dobbiamo creare il custom post type per memorizzare i feed RSS come post. Il nostro tipo di post dovrà avere solo il titolo e il riassunto come parametri abilitati. Aggiungiamo il seguente codice al file functions.php:


add_action('init', 'create_rss_feed_uri');

function create_rss_feed_uri() {
	$labels = array(
		'name' => _x('RSS', 'Tutti gli RSS'),
		'singular_name' => _x('RSS', 'singolo post RSS'),
		'add_new' => _x('Aggiungi nuovo RSS', 'rss'),
		'add_new_item' => __('Aggiungi nuovo RSS'),
		'edit_item' => __('Modifica RSS'),
		'new_item' => __('Nuovo RSS'),
		'view_item' => __('Visualizza RSS'),
		'search_items' => __('Cerca RSS'),
		'not_found' =>  __('Non trovato'),
		'not_found_in_trash' => __('Non presente nel cestino'),
		'parent_item_colon' => ''
	);

	$menu_args = array(
		'labels' => $labels,
		'label' => __('RSS'),
		'singular_label' => __('RSS'),
		'public' => true,
		'show_ui' => true,
		'capability_type' => 'post',
		'hierarchical' => false,
		'revisions' => true,
		'rewrite' => true,
		'supports' => array('title', 'excerpt')
	);
	register_post_type('rss',$menu_args);
}

Permettere l'inserimento dei feed

Creiamo il seguente form per permettere l'inserimento del titolo e dell'URL del feed RSS:


<form action="" method="POST">
 <div>
  <input type="text" value"" name="rss_title" />
  <input type="text" value"" name="rss_uri" />
  <input type="submit" value"Invia" name="submit" />
 </div>
</form>

Quindi effettuiamo l'elaborazione del form e il parsing del feed, creando infine un post con i valori ottenuti:


include_once(ABSPATH . WPINC . '/feed.php');

		/* Valida l'URL del feed RSS */
		$rss = fetch_feed(esc_url($_POST["rss_uri"]));

		if (!is_wp_error( $rss ) ) :
			/* Prepara il contenuto del feed per essere inserito come post */
			$newrss_post = array(
				'post_title' => esc_html($_POST["rss_title"]),
				'post_excerpt' => esc_url($_POST["rss_uri"]),
				'post_author' => $current_user->ID,
				'post_status' => 'publish',
				'post_type' => "rss"
			);

			/* Inserisce il post nel database */
			$post_id = wp_insert_post( $newrss_post );
		else:
			echo "Errore nella validazione del feed RSS";
		endif;

Creare lo shortcode

Per automatizzare il processo di inserimento dei feed e per aggiungere il form al nostro tema di WordPress creiamo il seguente shortcode:


add_shortcode( 'rss_form_submit', 'create_rss_feed_form' );

function create_rss_feed_form(){
	echo '<form action="" method="POST">
	        <div>
			<input type="text" value""="" name="rss_title" />
			<input type="text" value""="" name="rss_uri" />
			<input type="submit" value"Invia" name="submit" />
			</div>
			</form>';

	if(isset($_POST["rss_title"])):

		
		$rss = fetch_feed(esc_url($_POST["rss_uri"]));

		if (!is_wp_error( $rss ) ) :
			
			$newrss_post = array(
				'post_title' => esc_html($_POST["rss_title"]),
				'post_excerpt' => esc_url($_POST["rss_uri"]),
				'post_author' => $current_user->ID,
				'post_status' => 'publish',
				'post_type' => "rss"
			);

			
			$post_id = wp_insert_post( $newrss_post );
			echo "RSS successfully submitted";
		else:
			echo "Errore nella validazione del feed RSS";
		endif;

	endif;
}
Torna su