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;
}