Utilizzo di campi personalizzati per creare riquadri di revisione

Le recensioni sono forse uno dei più grandi poteri di blogging in termini di autorità. Se fatti correttamente (con duro lavoro e informazioni coerenti), i blog di revisione sono probabilmente la categoria più redditizia nella blogosfera. Ma ogni blog deve offrire un design solido nei loro post, comprese le recensioni. In questo post, parleremo di come costruire la scatola di revisione perfetta, dal momento che le caselle di revisione sono probabilmente la prima parte che i lettori controllano prima di leggere una recensione.


Cosa stiamo andando a costruire

Ad esempio, creeremo una casella di revisione per un film.

Prendiamo uno dei miei film preferiti di tutti i tempi, The Pursuit of Happyness. Mostreremo le seguenti informazioni sul film:

  • Nome: La ricerca della felicità
  • Anno: 2006
  • Direttore: Gabriele Muccino
  • Scrittore: Steve Conrad
  • Stelle: Will Smith, Jaden Smith, Thandie Newton
  • Genere: Biografia, Drama
  • Durata: 117 minuti
  • Trama: Basato su una storia vera di un uomo di nome Christopher Gardner. Gardner ha investito molto in un dispositivo noto come "scanner Bone Density". Si sente come se avesse realizzato questi dispositivi. Tuttavia, non vendono perché sono marginalmente migliori rispetto all'attuale tecnologia ad un prezzo molto più alto. Mentre Gardner cerca di capire come venderli, sua moglie lo lascia, perde la casa, il suo conto in banca e le carte di credito. Costretto a vivere per le strade con suo figlio, Gardner è ora alla disperata ricerca di un lavoro stabile; fa un lavoro come agente di cambio, ma prima di poter ricevere la paga, ha bisogno di passare 6 mesi di addestramento e vendere i suoi dispositivi.
  • (Non dimentichiamo che abbiamo bisogno di un'immagine.)

Importante: Questa informazione è presa in prestito da Internet Movie Database.


Passaggio 1 Preparazione della Meta Box personalizzata per compilare i dati

Conserveremo i dati come valori dei campi personalizzati, ma aggiungere campi personalizzati manualmente per ciascuna recensione può essere così doloroso. Per questo motivo, creeremo una meta box personalizzata per salvare i nostri dati come campi personalizzati.

Per prima cosa, dobbiamo usare il add_meta_box () funzione per costruire la meta-box e creare una funzione di callback:

 function wptuts_review_box_add_meta () add_meta_box ('review-box', 'The Review Box', 'wptuts_review_box_meta', 'post', 'normal', 'high');  add_action ('add_meta_boxes', 'wptuts_review_box_add_meta'); function wptuts_review_box_meta () // Ciao! 

La funzione di callback creerà i campi di input per contenere i nostri dati. Penso che possiamo usare una texarea per il campo "trama" e campi di inserimento del testo per tutto il resto:

 ID); // estrae i membri dell'array $ values ​​alle proprie variabili (che puoi vedere di seguito, nel codice HTML) extract ($ values, EXTR_SKIP); wp_nonce_field ('review_box_meta_action', 'review_box_meta_nonce'); ?> 

Quindi, dobbiamo creare la funzione per fare in modo che WordPress salvi i valori di input come campi personalizzati:

 funzione wptuts_review_box_save_meta ($ post_id) if (definito ('DOING_AUTOSAVE') && DOING_AUTOSAVE) restituisce; if (! isset ($ _POST ['review_box_meta_nonce']) ||! wp_verify_nonce ($ _POST ['review_box_meta_nonce'], 'review_box_meta_action')) return; se (! current_user_can ('edit_post')) restituisce; // crea un array dei nostri campi personalizzati $ review_array = array ('_wptuts_review_name', '_wptuts_review_year', '_wptuts_review_director', '_wptuts_review_writer', '_wptuts_review_stars', '_wptuts_review_genre', '_wptuts_review_runtime', '_wptuts_review_image', '_wptuts_review_storyline') ; // crea i valori "predefiniti" per l'array $ review_array_defaults = array ('_wptuts_review_name' => 'None', '_wptuts_review_year' => 'None', '_wptuts_review_director' => 'None', '_wptuts_review_writer' => 'None ',' _wptuts_review_stars '=>' Nessuno ',' _wptuts_review_genre '=>' Nessuno ',' _wptuts_review_runtime '=>' Nessuno ',' _wptuts_review_image '=>' Nessuno ',' _wptuts_review_storyline '=>' Nessuno '); // li analizzo! $ review_array = wp_parse_args ($ review_array, $ review_array_defaults); // Elementi HTML ammessi nei campi $ allowed_html = array ('a' => array ('href' => array (), 'title' => array ()), 'em' => array (), 'strong' => array ()); // aggiorna i metadati del post con i campi di input (se sono impostati) foreach ($ review_array as $ item) if (isset ($ _POST [$ item])) update_post_meta ($ post_id, $ item, wp_kses ($ _ POST [$ item], $ allowed_html));  add_action ('save_post', 'wptuts_review_box_save_meta');

Fatto!

Per trovare maggiori informazioni sulla creazione di meta box personalizzati (e cosa significano in realtà queste righe di codice), puoi leggere questo fantastico articolo scritto da Christopher Davis e pubblicato su Wptuts+.

Passaggio 2 Costruire la funzione per mostrare la casella di revisione

Ora che abbiamo coperto come impostato le informazioni, abbiamo bisogno di imparare come ottenere l'informazione. Se prima hai lavorato con i campi personalizzati, questo sarà facile dato che stiamo andando a recuperare valori di campi personalizzati.

WordPress ha una funzione facile da usare per ottenere valori di campo personalizzati:

 $ meta_values ​​= get_post_meta ($ post_id, $ key, $ single);

Abbiamo bisogno di caricare valori di campo personalizzati in un codice HTML, quindi sarebbe saggio pensare ora all'HTML. Sto pensando qualcosa del genere:

 
The Pursuit of Happyness (2006)
  • Nome: La ricerca della felicità
  • Anno: 2006
  • Direttore: Gabriele Muccino
  • Scrittore: Steve Conrad
  • Stelle: Will Smith, Jaden Smith, Thandie Newton
  • Genere: Biografia, Drama
  • Durata: 117 minuti
  • Trama: Basato su una storia vera di un uomo di nome Christopher Gardner. Gardner ha investito molto in un dispositivo noto come "scanner Bone Density". Si sente come se avesse realizzato questi dispositivi. Tuttavia, non vendono perché sono marginalmente migliori rispetto all'attuale tecnologia ad un prezzo molto più alto. Mentre Gardner cerca di capire come venderli, sua moglie lo lascia, perde la casa, il suo conto in banca e le carte di credito. Costretto a vivere per le strade con suo figlio, Gardner è ora alla disperata ricerca di un lavoro stabile; fa un lavoro come agente di cambio, ma prima di poter ricevere la paga, ha bisogno di passare 6 mesi di addestramento e vendere i suoi dispositivi.

E se li mettiamo insieme, avremo la nostra funzione pronta!

 function wptuts_review_box () global $ post; // ottiene i valori del campo personalizzato come una matrice $ values ​​= get_post_custom ($ post-> ID); // estrae i membri dell'array $ values ​​alle proprie variabili (che puoi vedere di seguito, nel codice HTML) extract ($ values, EXTR_SKIP); // se non ci sono link immagine nel campo personalizzato "review_image", prova a ottenere l'immagine in primo piano if ($ _ wptuts_review_image == ") if (has_post_thumbnail ()) $ get_wptuts_review_image = wp_get_attachment_image_src (get_post_thumbnail_id (), 'full') ; $ _wptuts_review_image = $ get_wptuts_review_image [0]; else $ _wptuts_review_image = 'http://placehold.it/150x200&text=No+Image'; // evita l'output, nel caso in cui $ allowed_html = array ('a '=> array (' href '=> array (),' title '=> array ()),' em '=> array (),' strong '=> array ()); $ _wptuts_review_name_output = wp_kses ($ _ wptuts_review_name [0], $ allowed_html); $ _wptuts_review_year_output = wp_kses ($ _ wptuts_review_year [0], $ allowed_html); $ _wptuts_review_director_output = wp_kses ($ _ wptuts_review_director [0], $ allowed_html); $ _wptuts_review_writer_output = wp_kses ($ _ wptuts_review_writer [0], $ allowed_html); $ _wptuts_review_stars_output = wp_kses ($ _ wptuts_review_stars [0], $ allowed_html); $ _wptuts_review_genre_output = wp_kses ($ _ wptuts_review_genre [ 0], $ allowed_html); $ _wptuts_review_runtime_output = wp_kses ($ _ wptuts_review_runtime [0], $ allowed_html); $ _wptuts_review_storyline_output = wp_kses ($ _ wptuts_review_storyline [0], $ allowed_html); $ _wptuts_review_image_output = wp_kses ($ _ wptuts_review_image [0], $ allowed_html); $ output = '
'$ _ Wptuts_review_name_output.' ( '$ _ Wptuts_review_year_output.')
  • Nome: '$ _ Wptuts_review_name_output.'
  • Anno: '$ _ Wptuts_review_year_output.'
  • Direttore: '$ _ Wptuts_review_director_output.'
  • Scrittore: '$ _ Wptuts_review_writer_output.'
  • Stelle: '$ _ Wptuts_review_stars_output.'
  • Genere: '$ _ Wptuts_review_genre_output.'
  • Durata: '$ _ Wptuts_review_runtime_output.'
  • Trama: '$ _ Wptuts_review_storyline_output.'
'; restituire $ output;

Il CSS

Naturalmente, puoi personalizzare la tua casella di revisione in qualsiasi modo desideri. Se non ne hai voglia, sei libero di usare il nostro:

 .review-box width: 550px; border: 1px solid #DDD; border-radius: 5px; margin: 10px; .review-box-image float: right; width: 150px; border: 10px solid #fff; border- width: 0 0 10px 10px; margin: 10px 10px 0 0; .review-box-list margin: 10px; padding: 0; list-style: none; .review-box-list li margin-bottom: 5px ; padding-top: 5px; border-top: 1px solid #EEE; .review-box-list li: first-child border-top: 0; .review-box-list li strong display: inline-block ; larghezza: 75px;
Se si desidera spostare la casella di revisione a sinistra oa destra, non dimenticare di aggiungere il float: sinistra; (o float: right;) dichiarazione per .revisione-box. Puoi persino centrarlo cambiando il margin: 10px; dichiarazione in margine: 10px auto;.

Passaggio 3 Creazione dello shortcode per echeggiare la funzione

Sappiamo come impostare le informazioni, sappiamo come ottenere le informazioni ... Ora è il momento che noi mostrare le informazioni! :)

Possiamo sempre aggiungere la casella automaticamente alla fine (o all'inizio) del post in questo modo:

 function wptuts_review_box_add ($ content) $ review_box = wptuts_review_box (); // mostra la casella alla fine del post: restituisci $ content. $ review_box; // mostra la casella all'inizio del post: // restituisce $ review_box. $ content;  add_action ('the_content', 'wptuts_review_box_add');

Ma cosa succede se vogliamo includere la scatola dentro il post? Ecco dove la mia parte preferita è utile: shortcode!

Questo passaggio sarebbe ancora più semplice di quello precedente, dal momento che abbiamo effettivamente svolto tutto il lavoro per caricare la casella di controllo. Tutto ciò che dobbiamo fare è chiamare la funzione come uno shortcode come questo:

 add_shortcode ( 'reviewbox', 'wptuts_review_box');

Ecco cosa avrai se segui i passaggi sopra esattamente come sono scritti:


Avvolgendo

Queste caselle di revisione potrebbero essere utilizzate per un sacco di recensioni diverse come software, siti Web, libri, programmi TV e così via. Oppure, se puoi diventare creativo, puoi persino usarli nei blog normali solo per divertirti!

Alcuni articoli da controllare

Per comprendere appieno il codice e anche per migliorarlo, dovresti leggere alcuni altri articoli di Wptuts +:

  • Come creare caselle di scrittura / Meta personalizzate di WordPress (dovresti leggere questo articolo se vuoi imparare il concetto di meta box personalizzati).
  • Come integrare l'Uploader di Media di WordPress nelle opzioni Tema e Plugin (Questo potrebbe essere utile se desideri consentire agli autori di caricare direttamente le immagini della recensione).
  • Sanificazione e validazione dei dati con WordPress (un grande articolo sull'igienizzazione dei dati. Ricorda: non puoi nemmeno fidarti di questo!)

C'è qualcosa che vorresti migliorare o hai un'idea? Condividi i tuoi pensieri con noi commentando di seguito.