Comment créer un site RSS Syndicator avec WordPress

Dans ce tutoriel, je vais expliquer comment créer un syndicateur, ou un site de ping, à l'aide de la fonctionnalité WordPress. Cette fonction peut être utile pour les propriétaires qui souhaitent créer un répertoire d'articles qui permettra à leurs utilisateurs de soumettre des articles sur leur site Web à l'aide de RSS. Pour vous donner une idée de l’apparence d’un tel site, j’ai créé un site de démonstration RSS pour ce didacticiel. Maintenant commençons.


Étape 1: Configuration d'un espace réservé de flux

Nous devons d’abord créer un endroit où les utilisateurs peuvent ajouter leurs flux RSS. Au début, je pensais que l’utilisation de la section de profil utilisateur WordPress existante serait suffisante, mais si nous souhaitons autoriser plusieurs soumissions Web, cela peut être gênant. Nous allons configurer un nouveau type de publication personnalisé pour gérer l'URL du flux RSS de l'utilisateur. Vous pouvez en savoir plus sur les types de publication personnalisés en lisant l'article Classe de rédaction de type de publication personnalisé..

Nous aurons besoin de 2 champs uniquement pour le type de message personnalisé, un titre et un emplacement pour ajouter l'URL (j'utilise la colonne de l'extrait pour que tout reste simple)

 / * Nouveau type de message personnalisé pour la nouvelle gestion des flux RSS. * / add_action ('init', 'create_rss_feed_uri'); function create_rss_feed_uri () $ labels = array ('name' => _x ('RSS', 'Tous les RSS'), 'singular_name' => _x ('RSS', 'élément unique pour rss'), 'add_new' => _x ('Ajouter un nouveau RSS', 'rss'), 'add_new_item' => __ ('Ajouter un nouveau RSS'), 'edit_item' => __ ('Modifier RSS'), 'new_item' => __ (' Nouveau RSS '),' view_item '=> __ (' View RSS '),' search_items '=> __ (' Recherche RSS '),' not_found '=> __ (' Rien trouvé '),' not_found_in_trash '=> __ ('Rien trouvé dans la corbeille'), 'parent_item_colon' => "); $ menu_args = array ('labels' => $ labels, 'label' => __ ('RSS'), 'singular_label' => __ (' RSS '),' public '=> vrai,' show_ui '=> vrai,' capacite_type '=>' post ',' hierarchical '=> faux,' revisions '=> vrai,' rewrite '=> vrai,' prend en charge '=> array (' title ',' extrait ')); register_post_type (' rss ', $ menu_args);

Enregistrez le code suivant dans un nouveau fichier (rss_feed_functions.php) et téléchargez-le dans le dossier suivant / wp-content / mu-plugins /. La fonction sera chargée sans qu'il soit nécessaire de l'activer comme un plugin normal.


Étape 2: Configuration de la soumission de flux RSS de page personnalisée

Une fois que nous avons configuré notre type de publication personnalisé pour conserver l'URL RSS, nous devons configurer une page sur laquelle un utilisateur peut soumettre son URL. La fonction suivante va créer un formulaire et vous pouvez l'inclure dans n'importe quelle page en utilisant le shortcode que nous définissons dans le code..

Nous avons besoin d'un champ de saisie pour permettre à un utilisateur d'ajouter un titre et une URL pour le RSS..

 

La prochaine chose, nous devons gérer le formulaire une fois qu'il est posté. Le code suivant nous permettra de préparer la requête pour insérer les données sur notre site Web..

 / * prépare et traite les données rss * / $ newrss_post = array ('post_title' => $ _POST ["rss_title"], "post_excerpt" => $ _POST ["rss_uri"], "post_author" => $ current_user-> ID, 'post_status' => 'publier', 'post_type' => "rss"); $ post_id = wp_insert_post ($ newrss_post);

Mais avant d'insérer toutes les données que nous avons reçues du formulaire, nous souhaitons d'abord valider l'URL du flux et le titre. Pour valider facilement l'URL du flux, nous allons utiliser la fonction WordPress suivante pour vérifier si l'URL du flux renvoie un contenu valide..

 include_once (ABSPATH. WPINC. '/feed.php'); / * valider l'URL du flux * / $ rss = fetch_feed (esc_url ($ _ POST ["rss_uri"])); if (! is_wp_error ($ rss)): / * prépare le contenu 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 "); / * insérer les détails rss dans la base de données * / $ post_id = wp_insert_post ($ newrss_post); else: echo "Une erreur est survenue lors de la validation de votre flux RSS, veuillez réessayer"; fin si;

Si tout fonctionne bien, nous insérons les données du flux dans la base de données. La fonction complète avec fonctionnalité shortcode ressemblera au code présenté ci-dessous, nous pouvons ajouter la fonction complète à notre rss_feed_functions.php fichier.

 add_shortcode ('rss_form_submit', 'create_rss_feed_form'); / * Formulaire pour soumettre une nouvelle URL RSS * / function create_rss_feed_form () echo '
'; if (isset ($ _ POST ["rss_title"])): / * valider l'URL du flux * / $ rss = fetch_feed (esc_url ($ _ POST ["rss_uri"])); if (! is_wp_error ($ rss)): / * prépare le contenu 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 "); / * insérer les détails rss dans la base de données * / $ post_id = wp_insert_post ($ newrss_post); echo "RSS soumis avec succès"; else: echo "Une erreur est survenue lors de la validation de votre flux RSS, veuillez réessayer"; fin si; fin si;

Maintenant nous pouvons utiliser le shortcode [rss_form_submit] dans n'importe laquelle de nos pages et vous pouvez personnaliser le formulaire pour l'adapter à la conception de votre site Web. Vous voudrez peut-être autoriser uniquement les utilisateurs enregistrés à pouvoir voir et utiliser cette page.


Étape 3 Soumission d'article via l'URL du fil

Comme nous avons déjà l'URL du flux dans notre base de données, nous souhaitons ensuite traiter l'article que les utilisateurs souhaitent soumettre à notre site de ping. Nous aurons besoin d’une nouvelle page pour cela, et pour nous assurer que la fonction peut être utilisée sur n’importe quel thème, nous utiliserons la même approche que celle utilisée pour la soumission d’URL de flux pour la soumission de l’article, en utilisant une fonction avec shortcode..

Tout d’abord, nous devons lire le flux de l’utilisateur actuel.

 global $ current_user, $ wpdb; get_currentuserinfo (); / * requête personnalisée pour récupérer le type de message personnalisé sans le rendre * / $ rssfeed = $ wpdb-> get_results ("SELECT * FROM $ wpdb-> posts WHERE post_type = 'rss' AND post_status = 'publish' AND post_author =". $ current_user-> ID. "");

Si un flux RSS est trouvé, nous pouvons alors commencer à lire en boucle l'URL du flux et récupérer le dernier article à partir du flux..

 foreach ($ rssfeed as $ post): setup_postdata ($ post); écho "

". $ post-> post_title."

"; $ rss = fetch_feed (esc_url ($ post-> post_excerpt)); if (! is_wp_error ($ rss)): $ item = $ rss-> get_item (0); echo esc_html ($ item-> get_title ()) ; endif; endforeach;

Nous avons déjà le premier article à insérer dans notre site Web. Avant de continuer à l'ajouter à la base de données, il est préférable de vérifier d'abord si l'article existe déjà sur notre site Web. Nous vérifierons le titre de l'élément de fil, s'il existe déjà. Il s'agit d'une méthode de base. Vous pouvez vérifier plusieurs attributs pour vous assurer qu'il n'y a pas d'article dupliqué dans la base de données..

 if ($ wpdb-> get_row ("SELECT post_title FROM $ wpdb-> posts WHERE post_title = '". $ item -> get_title (). "' AND AND post_status = 'publish'", 'ARRAY_A')): echo "Non nouvel article trouvé "; else: echo esc_html ($ item-> get_title ()); fin si;

Nous pouvons maintenant traiter les données extraites du flux dans notre base de données. Pour simplifier la tâche de notre utilisateur, nous inclurons le formulaire de soumission directement après avoir récupéré et vérifié l'URL..

 écho '
'.esc_html ($ item-> get_title ()).'
';

Dans l'exemple, nous traitons le titre, le contenu, les liens permanents et la date à insérer dans notre base de données. Les utilisateurs verront le titre et le bouton de soumission comme la capture d'écran ci-dessous.

La dernière étape que nous devons faire est d’insérer les données dans la base de données. Nous préparons la déclaration avant d'exécuter la requête.

 $ prepare_content = array ('post_date' => $ _POST ["date"], 'post_title' => esc_html ($ _ POST ["post_title"]), 'post_content' => $ _POST ["content"], "post_author" => $ current_user-> ID, 'post_status' => 'publier', 'post_type' => 'rss');

Nous allons d'abord traiter ces détails avant d'insérer les données supplémentaires dans notre méta-boîte personnalisée..

 $ post_id = wp_insert_post ($ prepare_content); add_post_meta ($ post_id, 'feed_item_permalink', esc_url ($ _ POST ["permalink"]));

Toutes les données de l'article sont maintenant insérées avec succès dans la base de données. Nous avons maintenant un site de syndication ou de ping prêt à être utilisé. Il y a plus de possibilités que vous pouvez ajouter pour améliorer la qualité de votre site de ping, mais ceci était une introduction simple.


Conclusion

J'ai inclus le code source complet (lien en haut de cet article) que j'utilise sur le site RSS de démonstration. Si vous avez des suggestions ou des améliorations pour ce tutoriel, je suis impatient de lire les idées et les suggestions contenues dans les commentaires ci-dessous..