Hack samen een door de gebruiker bijgedragen linkfeed met WordPress-opmerkingen

Hoewel WordPress een * zeer * uitgebreide plug-in collectie heeft, komen er af en toe dingen op de markt waarvoor (nog) geen geschikte plug-ins beschikbaar zijn. Toen ik PSDTUTS bouwde, vond ik het cool om gebruikers de mogelijkheid te bieden links in te dienen en er een openbare link-feed van te maken. Vandaag laat ik je zien hoe ik een methode heb gehacked met behulp van de reacties van WordPress.

Dus in de eerste plaats als je niet zeker weet wat ik bedoel met een door gebruikers bijgedragen linkfeed, hoef je alleen maar in de zijbalk van NETTUTS te kijken en zie je onze openbare linkfeed. U kunt zich abonneren via RSS of klikken om uw eigen koppelingen in te dienen. Het is een leuke manier om meer interactiviteit op de site te krijgen en om lezers te laten profiteren van het verkeer van de TUTS-sites naar hun eigen blogs en tutorials.

Ruw actieplan

Het eerste wat je moet doen is bedenken hoe het allemaal gaat werken. Dit is ons plan:

  1. Eerst maken we een speciale post op onze blog die slechts enkele korte instructies voor indiening heeft
  2. Vervolgens bewerken we het bestand comments.php zodat wanneer dit speciale bericht wordt weergegeven, het de opmerkingen anders zal weergeven
  3. Op deze opmerkingen zullen we het formulier met de standaard opmerkingen wijzigen zodat het opnieuw kan worden gecodeerd, zodat de velden in de link passen
  4. Vervolgens veranderen we de manier waarop opmerkingen zowel op het bericht als in de reacties-RSS worden weergegeven, zodat dit logisch is
  5. Eindelijk maken we een stukje code om de laatste 10 links te trekken en deze in de zijbalk te plaatsen

Het voordeel van het gebruik van het reguliere WordPress-reactiesysteem is dat er al een goedkeurings- en spamvangende workflow aanwezig is.

Stap 1 - Maak de post

Voor mijn voorbeeld vandaag ga ik de binnenkort te lanceren AUDIOTUTS-site gebruiken die ik de middag doorbracht bij het samenstellen. Dus we maken gewoon een reguliere post met een titel en wat tekst, je kunt zien dat ik de mijne maak in de screenshot:

En hier is het op de AUDIOTUTS-site:

Het is nu belangrijk om uit te zoeken wat de bericht-ID is voor onze post. U kunt dit achterhalen door het bericht dat u zojuist hebt gemaakt te bewerken en de URL voor de pagina met bewerkingspagina's te bekijken. De URL van mijn bewerkingspost is "http://audiotuts.com/wp-admin/post.php?action=edit&post=3" dus daarom is de bericht-ID 3!

Stap 2 - Bewerk Comments.php

Vervolgens gaan we ons comments.php-bestand wijzigen om te zoeken naar het bericht met ID van 3 en om de opmerkingen van die specifieke post er anders uit te laten zien. Merk op dat als je geïnteresseerd bent om meer te weten te komen over het comments.php bestand, we hier een geweldige tutorial hebben op NETTUTS genaamd Unraveling the Secrets of Comments.php, dat is een geweldige plek om te beginnen.

Dus in principe gaan we een grote if-instructie toevoegen en als de Post-ID niet 3 is, dan doen we onze reguliere opmerkingen en als het 3 is, veranderen we de manier waarop ze worden weergegeven EN hoe de vorm eruitziet . Hier is mijn comments.php-bestand voor AUDIOTUTS (houd er rekening mee dat ik de opmerkingen regelmatig heb becommentarieerd om het duidelijker te maken met betrekking tot de link-feed)

 ID! = 3) // Als de bericht-ID * NIET * gelijk is aan 3 (onze link-feedpost die we eerder hebben gemaakt) // dan voeren we de reguliere comments.php-spullen in deze ruimte uit. // // Ik heb de mijne verwijderd om mijn codefragment een beetje overzichtelijker te maken else ?> 

Eerdere gebruikersinzendingen

Verzend een link

Verzend een link

ID KAART); ?>

Dus laten we onze code in twee delen analyseren, eerst het formulier en vervolgens het commentaarscherm.

Stap 3 - Het opmerkingenformulier wijzigen

Standaard zijn er vier formuliervelden die door WordPress worden gebruikt om reacties toe te staan, dit zijn:

  1. Schrijver
  2. E-mail
  3. URL
  4. Commentaar

Voor het ontvangen van een link hebben we drie dingen nodig:

  1. Link titel
  2. URL
  3. Link beschrijving

Daarom brengen we de vier formuliervelden op onze drie vereisten in kaart:

  1. Author Field> Link Title
  2. URL> URL
  3. Opmerking> Linkbeschrijving

En voor het e-mailveld schakelen we dit om naar een verborgen formulierveld en geven het een waarde van '[email protected]', waardoor de links veel eenvoudiger te herkennen zijn als ze worden goedgekeurd in de goedkeuring van reacties..

Dus hier is de vorm die ik gebruik:

 

ID KAART); ?>

Zoals je ziet hebben we er drie velden en één voor het e-mailadres. En hoewel in de HTML deze invoervelden nog steeds hun gebruikelijke id's hebben (auteur, URL, opmerking), kunt u in de tekst zien dat de gebruiker ziet dat deze worden gelabeld als linktitel, URL en linkbeschrijving. Zodat de vorm er zo uitziet:

Stap 4 - Eerdere linkinzendingen weergeven

Vervolgens formatteren we hoe de vorige opmerkingen worden weergegeven, zodat ze ook gebruikmaken van het opnieuw gebruiken van de velden author, url en comment. Dit is de code die we gebruiken om de links weer te geven:

  

Dus dit is wat we aan het doen zijn

  1. Eerst controleren we of er zelfs reacties zijn
  2. Als dat het geval is, genereren we een geordende lijst
      van inzendingen
    1. Voor elke reactie publiceren we een
    2. element met:
      1. Een gelinkte naam van de auteur - onthoud dat we deze velden hebben gebruikt, zodat dit de linktitel is die aan de URL is gekoppeld
      2. De commentaartekst - of met andere woorden onze linkbeschrijving.

    Stap 5 - Updaten van de RSS-reacties

    Het mooie aan het gebruik van opmerkingen is dat er standaard een RSS-feed is voor elk WordPress-bericht. De URL is eenvoudigweg het adres voor de post gevolgd door '/ feed'. Dus in ons geval is het: http://audiotuts.com/general/user-link-feed/feed/

    Het enige probleem is dat de opmaak van de reacties-RSS standaard een feed zal maken die er als volgt uitziet (in Safari):

    Er zijn dus drie problemen:

    1. De titel van de feed is "Comments On: User Link Feed"
    2. De titel van de link zegt "Door: ..."
    3. De link gaat niet naar de URL, maar gaat terug naar AUDIOTUTS

    Dus om deze problemen op te lossen, moeten we de feed-sjabloon bewerken. Dus gaan we naar onze WordPress-installatie naar /wp-includes/feed-rss2-comments.php, dat is het sjabloonbestand voor de reacties RSS. Hier is wat het bestand standaard bevat (in WordPress 2.5.1):

     '; ?>   <?php if ( is_singular() ) printf(__('Comments on: %s'), get_the_title_rss()); elseif ( is_search() ) printf(__('Comments for %s searching on %s'), get_bloginfo_rss( 'name' ), attribute_escape($wp_query->query_vars ['s '])); else printf (__ ('Comments for% s'), get_bloginfo_rss ('name'). get_wp_title_rss ()); ?>       comment_post_ID); get_post_custom ($ comment_post-> ID); ?>  <?php if ( !is_singular() )  $title = get_the_title($comment_post->ID KAART); $ title = apply_filters ('the_title_rss', $ title); printf (__ ('Reactie op% 1 $ s op% 2 $ s'), $ title, get_comment_author_rss ());  else printf (__ ('Door:% s'), get_comment_author_rss ()); ?>     post_password) && $ _COOKIE ['wp-postpass']! = $ comment_post-> post_password):?>      comment_id, $ comment_post-> ID); ?>    

    Nu hoeven we niet echt te weten wat de meeste dingen doen, maar gaan we gewoon door en veranderen we enkele regels. De eerste regel die we kunnen oplossen, is regel 18, die we hieruit wijzigen:

    printf (__ ('Reacties op:% s'), get_the_title_rss ());

    hieraan:

    printf (__ ('% s'), get_the_title_rss ());

    Dan veranderen we hier lijn 42 van:

    printf (__ ('Door:% s'), get_comment_author_rss ());

    hieraan:

    printf (__ ('% s'), get_comment_author_rss ());

    In beide gevallen verwijderen we eenvoudig de extra woorden - "Opmerkingen over:" en "Door:" - zodat de feed logischer is. Dus dat was vrij eenvoudig. Het volgende stukje is iets gecompliceerder omdat we moeten wijzigen waar de URL naar verwijst. Nu verwijst het terug naar de post, zodat de gebruiker opmerkingen over die post kan volgen. Omdat dit sjabloon * alle * RSS-feeds controleert, willen we die functionaliteit niet doorbreken, dus hebben we een if-statement als volgt nodig:

     ID! = 3) comment_link ();  else echo $ comment-> comment_author_url; ?> 

    Dus hier controleren we eenvoudig of het bericht een ID van 3 heeft (wat in ons voorbeeld de bericht-ID van de gebruikerslink-feed is) en als dit het geval is, publiceren we de URL en zo niet, dan doen we de reguliere comment_link () -functie . Dus de uiteindelijke RSS-sjabloon ziet er zo uit:

     '; ?>   <?php if ( is_singular() ) printf(__('%s'), get_the_title_rss()); elseif ( is_search() ) printf(__('Comments for %s searching on %s'), get_bloginfo_rss( 'name' ), attribute_escape($wp_query->query_vars ['s '])); else printf (__ ('Comments for% s'), get_bloginfo_rss ('name'). get_wp_title_rss ()); ?>       comment_post_ID); get_post_custom ($ comment_post-> ID); ?>  <?php if ( !is_singular() )  $title = get_the_title($comment_post->ID KAART); $ title = apply_filters ('the_title_rss', $ title); printf (__ ('Reactie op% 1 $ s op% 2 $ s'), $ title, get_comment_author_rss ());  else printf (__ ('% s'), get_comment_author_rss ()); ?>  ID! = 3) comment_link ();  else echo $ comment-> comment_author_url; ?>     post_password) && $ _COOKIE ['wp-postpass']! = $ comment_post-> post_password):?>      comment_id, $ comment_post-> ID); ?>    

    En als gevolg daarvan zien onze RSS-feeds er nu als volgt uit (voor de gebruikerskoppeling en een reguliere post):


    Stap 6 - De laatste 10 items in de zijbalk weergeven

    Vervolgens moeten we onze meest recente 10 items in de zijbalk weergeven. Hier is een klein stukje code om dat te doen:

      

    Dus je kunt zien dat we hier zijn:

    1. Alle goedgekeurde reacties uit de post pakken met Post ID = 3 als een array en deze omkeren zodat we de meest recente eerste krijgen
    2. Dan creëren we een
        element en voor elke opmerking in de array van maximaal 10 drukken we een
      • element met de link, titel en beschrijving

    En met een beetje styling hier is hoe het resultaat eruit ziet:

    Afgewerkt!

    Dus dat is het! Ik vind het ook leuk om de feed via Feedburner te branden, zodat ik kan bijhouden hoeveel mensen zich abonneren. Tot nu toe was het een handige functie, hier bij NETTUTS hebben we ongeveer 150 abonnees op de linkfeed, bij PSDTUTS hebben we bijna 500 abonnees. Ze zijn dus een goede manier om de community op de hoogte te stellen van nieuwe links en ze houden de site regelmatig bijgewerkt.

    Ik heb recent de fabelachtig getalenteerde Joshua Blount gecontracteerd om dit in een WordPress plug-in te bouwen. Als het allemaal klaar is, zorg ik ervoor dat hij het hier vrijgeeft als ons eerste stukje NETTUTS open source :-)