Hack Together un feed di link degli utenti con commenti WordPress

Sebbene WordPress abbia una collezione di plug-in * molto * estesa, di tanto in tanto si verificano cose per cui non sono disponibili plug-in adatti (ancora). Quando ho creato PSDTUTS ho pensato che sarebbe stato interessante avere un modo per gli utenti di inviare link e creare un feed di collegamento pubblico. Oggi ti mostrerò come ho hackerato un metodo usando i commenti di WordPress.

Quindi, prima di tutto se non sei sicuro di cosa intendo per Feed dei link dei contributi degli utenti, tutto ciò che devi fare è cercare nella barra laterale di NETTUTS e vedrai il nostro feed di collegamento pubblico. È possibile iscriversi tramite RSS o fare clic per inviare i propri collegamenti. È un piccolo modo per aumentare l'interattività nel sito e consentire ai lettori di sfruttare il traffico dei siti TUTS nei loro blog e tutorial.

Piano d'azione approssimativo

La prima cosa da fare è trovare un piano su come funzionerà tutto. Ecco il nostro piano:

  1. Per prima cosa creeremo un post speciale sul nostro blog che avrà solo alcune brevi istruzioni per l'invio
  2. Quindi modificheremo il file comments.php in modo che quando questo Post speciale venga visualizzato, visualizzerà i commenti in modo diverso
  3. Su quei commenti modificheremo il modulo dei commenti regolari per essere riclassificati in modo che i campi soddisfino l'invio di un link
  4. Quindi cambieremo il modo in cui i commenti vengono visualizzati sia sul post che nei commenti RSS in modo che abbia senso
  5. Finalmente faremo un po 'di codice per tirare gli ultimi 10 link e posizionarli nella barra laterale

Ora il vantaggio di utilizzare il normale sistema di commenti di WordPress è che esiste già un flusso di lavoro di approvazione e cattura dello spam.

Passaggio 1: crea il post

Per il mio esempio, oggi userò il sito di AUDIOTUTS che sarà pronto per il lancio che ho passato insieme nel pomeriggio. Quindi creiamo un Post normale con un titolo e del testo, puoi vedermi fare mio nello screenshot:

Ed eccolo sul sito di AUDIOTUTS:

Ora è importante scoprire che cos'è l'ID postale per il nostro post. Puoi capirlo modificando il post che hai appena creato e guardando l'URL per la pagina di modifica del post. Il mio URL del post di modifica è "http://audiotuts.com/wp-admin/post.php?action=edit&post=3", quindi l'ID postale è 3!

Passaggio 2: modifica commenti.php

Successivamente modificheremo il file comments.php per cercare il post con ID 3 e per rendere i commenti di quel particolare post diversi. Nota che se sei interessato a saperne di più sul file comments.php, qui abbiamo un ottimo tutorial su NETTUTS chiamato Unraveling the Secrets of Comments.php, che è un ottimo punto di partenza.

Quindi in pratica aggiungeremo una dichiarazione big if e se il post ID non è 3 allora faremo i nostri commenti regolari, e se è 3 allora cambieremo il modo in cui vengono visualizzati E come appare il modulo . Ecco il mio file comments.php per AUDIOTUTS (nota che ho commentato i commenti regolari per renderlo più chiaro in merito al feed del link)

 ID! = 3) // Se il Post ID è * NOT * uguale a 3 (il nostro feed di link post che abbiamo creato in precedenza) quindi // eseguiamo il file di commenti.php in questo spazio. // // Ho eliminato il mio per rendere lo snippet di codice un po 'più chiaro else ?> 

Contributi utente precedente

Invia un collegamento

Invia un collegamento

ID); ?>

Quindi analizziamo il nostro codice in due parti, prima il modulo e poi il display dei commenti.

Passaggio 3 - Modifica del modulo di commento

Per impostazione predefinita, ci sono quattro campi modulo utilizzati da WordPress per consentire l'inserimento di commenti, sono:

  1. Autore
  2. E-mail
  3. URL
  4. Commento

Per ricevere l'invio di un link abbiamo bisogno di tre cose:

  1. Link Title
  2. URL
  3. Descrizione del collegamento

Quindi mapperemo i quattro campi del modulo ai nostri tre requisiti come questo:

  1. Campo autore> Titolo collegamento
  2. URL> URL
  3. Commento> Descrizione del collegamento

E per il campo email, cambieremo campo di testo nascosto e assegneremo il valore "[email protected]", che renderà i collegamenti molto più facili da individuare quando vengono approvati nell'approvazione dei commenti.

Quindi ecco il modulo che sto usando:

 

ID); ?>

Come puoi vedere ne abbiamo tre campi e uno per l'indirizzo email. E sebbene nell'HTML questi campi di input abbiano ancora il loro solito id (autore, url, commento), puoi vedere nel testo che l'utente vede che sono etichettati come titolo del link, URL e descrizione del link. In modo che il modulo assomigli a questo:

Passaggio 4: visualizzazione dei collegamenti ai collegamenti precedenti

Successivamente modificheremo come appaiono i commenti precedenti in modo che possano utilizzare anche il riutilizzo dei campi autore, url e commenti. Ecco il codice che useremo per visualizzare i link:

  

Quindi ecco cosa stiamo facendo

  1. Per prima cosa controlliamo se ci sono anche dei commenti
  2. Se ci sono, allora genereremo una lista ordinata
      di voci
    1. Per ogni commento pubblichiamo un
    2. elemento con:
      1. Un nome autore collegato: ricorda che abbiamo utilizzato questi campi in modo che questo sia effettivamente il titolo del collegamento collegato all'URL
      2. Il testo del commento - o in altre parole la descrizione del nostro link.

    Passaggio 5: aggiornamento dei commenti RSS

    Ora l'aspetto positivo dell'utilizzo dei commenti è che, per impostazione predefinita, esiste un feed RSS per ogni post WordPress. L'URL è semplicemente l'indirizzo del post seguito da "/ feed". Quindi nel nostro caso è: http://audiotuts.com/general/user-link-feed/feed/

    L'unico problema è che per impostazione predefinita la formattazione dei commenti RSS creerà un feed simile a questo (in Safari):

    Quindi ci sono tre problemi:

    1. Il titolo del feed è "Commenti su: Feed link utente"
    2. Il titolo del collegamento dice "Da: ..."
    3. Il link non va all'URL, torna a AUDIOTUTS

    Quindi per risolvere questi problemi dobbiamo modificare il modello di feed. Quindi andiamo nella nostra installazione di WordPress a /wp-includes/feed-rss2-comments.php, che è il file modello per i commenti RSS. Ecco cosa contiene il file per impostazione predefinita (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 (__ ('Commenti per% s'), get_bloginfo_rss ('nome'). get_wp_title_rss ()); ?>       comment_post_ID); get_post_custom ($ comment_post-> ID); ?>  <?php if ( !is_singular() )  $title = get_the_title($comment_post->ID); $ title = apply_filters ('the_title_rss', $ title); printf (__ ('Commenta su% 1 $ s di% 2 $ s'), $ title, get_comment_author_rss ());  else printf (__ ('By:% s'), get_comment_author_rss ()); ?>     post_password) && $ _COOKIE ['wp-postpass']! = $ comment_post-> post_password):?>      comment_ID, $ comment_post-> ID); ?>    

    Ora non abbiamo davvero bisogno di sapere cosa faccia di più, piuttosto passeremo e cambieremo alcune righe. La prima riga che possiamo correggere è la riga 18, che cambiamo da questa:

    printf (__ ('Commenti su:% s'), get_the_title_rss ());

    a questo:

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

    Quindi cambieremo la linea 42 da questo:

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

    a questo:

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

    In entrambi i casi stiamo semplicemente rimuovendo le parole in più - "Commenti su:" e "Da:" - in modo che il feed abbia più senso. Quindi è stato abbastanza facile. Il prossimo bit è un po 'più complicato perché dobbiamo cambiare dove punta l'URL. Ora attualmente punta al post in modo che l'utente possa seguire i commenti su quel post. Poiché questo modello controlla * tutti * commenta i feed RSS, non vogliamo rompere questa funzionalità, quindi abbiamo bisogno di un'istruzione if come segue:

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

    Quindi qui stiamo semplicemente controllando se il post ha un ID di 3 (che nel nostro esempio è il Post ID del feed del link dell'utente) e se lo fa pubblicheremo l'URL, e se non lo facciamo la funzione comment_link () regolare . Quindi il modello RSS finale si presenta così:

     '; ?>   <?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 (__ ('Commenti per% s'), get_bloginfo_rss ('nome'). get_wp_title_rss ()); ?>       comment_post_ID); get_post_custom ($ comment_post-> ID); ?>  <?php if ( !is_singular() )  $title = get_the_title($comment_post->ID); $ title = apply_filters ('the_title_rss', $ title); printf (__ ('Commenta su% 1 $ s di% 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); ?>    

    E di conseguenza i nostri feed RSS di commento ora appaiono come questo (per il feed del collegamento utente e un post normale):


    Passaggio 6: visualizzazione degli ultimi 10 elementi nella barra laterale

    Successivamente, è necessario visualizzare i 10 elementi più recenti nella barra laterale. Ecco un piccolo pezzo di codice per farlo:

      

    Quindi puoi vedere qui siamo:

    1. Raccogli tutti i commenti approvati dal post con Post ID = 3 come array e invertendoli in modo da ottenere il più recente prima
    2. Quindi creiamo a
        elemento e per ogni commento nell'array fino a 10 stampiamo un
      • elemento con il link, titolo e descrizione

    E con un po 'di stile ecco come appare il risultato:

    Finito!

    Quindi è così! Mi piace anche masterizzare il feed tramite Feedburner in modo da poter monitorare quante persone iscriversi. Finora è stata una caratteristica abbastanza utile, qui a NETTUTS abbiamo circa 150 iscritti al feed di link, a PSDTUTS ne abbiamo quasi 500. Quindi sono un buon modo per far conoscere alla community nuovi collegamenti e mantengono il sito regolarmente aggiornato.

    Recentemente ho contattato il favoloso talento di Joshua Blount per creare questo plugin in WordPress. Una volta finito, mi assicurerò che lo rilasci qui come nostro primo pezzo di NETTUTS open source :-)