web-dev-qa-db-fra.com

Existe-t-il un plugin pour afficher les publications récentes d'un site Web dans la zone de widgets d'un autre?

J'aimerais prendre les titres des publications récentes ou liées au contenu d'un site Web et les afficher dans la zone des widgets d'un autre site Web. Je suis sûr qu'il doit y avoir un moyen de faire cela, peut-être une certaine adaptation au widget standard 'posts récents'?

J'ai fait quelque chose de similaire avant d'utiliser un flux RSS d'un site et d'afficher leurs titres dans un module sur un autre. Cependant, c'était dans un site non-wordpress et je ne sais pas trop comment atteindre le même résultat ici.

Idéalement, j'aimerais le faire sans utiliser de flux RSS et aussi pouvoir contrôler spécifiquement les articles affichés, peut-être en mesure de les définir manuellement ou selon d'autres critères que simplement "récents".

1
chentudou

Vous pouvez y parvenir de trois manières: deux sont très gourmandes en code, l'autre est déjà intégrée.

RSS

Main baissée, le moyen le plus simple de faire ce que vous voulez faire est d'utiliser un widget RSS. WordPress a déjà un widget RSS intégré au noyau, il vous suffit donc de spécifier le flux et le tour est joué!

Le widget affiche le titre par défaut, mais vous pouvez également ajouter le contenu de l'article, son auteur et sa date de publication. Le réglage de l'affichage frontal pour l'adapter à votre présentation revient au CSS, comme n'importe quel autre widget.

Cette méthode ne nécessite pas du tout que vous ayez accès à l'autre site et (autre que le style du CSS) ne nécessite aucun code.

alt text

Code personnalisé

Si vous avez un accès direct à la base de données (ce que vous dites oui), vous pouvez ajouter un script au site qui charge le contenu de l’autre. Vous pouvez le faire de deux façons:

  • Incluez le fichier de démarrage WordPress (wp-blog-header.php) et chargez WordPress dans le deuxième site. Ensuite, vous pouvez utiliser les fonctions de requête WordPress standard pour récupérer des publications et en faire ce que vous voulez.
  • Utilisez des requêtes directes dans la base de données pour extraire rapidement des informations de la base. Vous consultez la table wp_posts pour tout élément comportant post_type=post et post_status=publish. Obtenez juste le titre et le contenu, puis faites ce que vous devez faire.

J'ai effectivement utilisé cette méthode sur un site client. Ils possédaient déjà une page d'accueil PHP/MySQL et voulaient ajouter des liens vers un blog WordPress externe. Si vous allez sur leur site , vous verrez une liste de billets de blog sur la page d'accueil - la page d'accueil est générée par un CMS propriétaire qui interroge la base de données WordPress pour rechercher, analyser et afficher une liste de publications récentes.

XML-RPC

WordPress possède un fantastique système d'appel de procédure à distance XML intégré au noyau. Ce système permet aux applications externes (applications de bureau, applications iPhone, autres sites Web) d'interagir à distance avec WordPress en envoyant et en recevant des messages au format XML. Il existe même une méthode XML-RPC qui fait exactement ce que vous voulez: metaWeblog.getRecentPosts.

Activez donc XML-RPC pour le site à partir duquel vous souhaitez demander des publications. Envoyez ensuite une demande metaWeblog.getRecentPosts à http://yoursite.com/xmlrpc.php qui spécifie les paramètres suivants:

  • ID du blog avec lequel vous travaillez (généralement 0 pour un seul site)
  • Nom d'utilisateur WordPress
  • Mot de passe WordPress
  • Nombre de messages que vous souhaitez renvoyer

WordPress vous connecte, lance une requête pour récupérer les publications et renvoie un objet XML contenant une liste de publications récentes (autant que vous avez spécifié) contenant chacune les éléments suivants:

  • dateCreated - Date post-publication
  • userid - ID de l'auteur du message
  • postid - ID de la publication elle-même
  • description - Publier du contenu
  • title - Titre de l'article
  • link - Publier un lien permanent
  • permaLink - Publier un lien permanent
  • categories - Tableau de catégories d'articles
  • mt_excerpt - Publier un extrait
  • mt_text_more - Lire plus de texte
  • mt_allow_comments - Indique si les commentaires sont ouverts ou fermés
  • mt_allow_pings - Indique si les pings sont ouverts ou fermés
  • mt_keywords - Tableau de balises post
  • wp_slug - Lister une note
  • wp_password - Post mot de passe
  • wp_author_id - ID de l'auteur du message
  • wp_author_display_name - Nom complet de l'auteur du message
  • date_created_gmt - Date de publication (comme à l'heure GMT)
  • post_status - État après publication
  • custom_fields - Tableau de champs personnalisés
  • collant - Indique si le message est marqué ou non "collant"

J'ai écrit un didacticiel spécifique à l'API MetaWeblog (implémenté par WordPress) il y a quelque temps. J'en ai aussi écrit qui explique comment utiliser l'API XML-RPC à partir de WordPress pour passer des appels vers un système WordPress externe. Cela pourrait vous aider à démarrer.

Si vous souhaitez récupérer un article spécifique plutôt que des articles "récents", il existe également un appel à une méthode. Il suffit d'appeler metaWeblog.getPost et de spécifier l'ID de la publication que vous voulez, ainsi que votre nom d'utilisateur et mot de passe WordPress. Cette méthode renverra une seule publication sous forme d'objet XML contenant les mêmes données que celles énumérées ci-dessus.

8
EAMann