WordPress: Aggiungere hashtag ai social post inviati con Jetpack Publicize

Wordpress: Aggiungere hashtag ai social post inviati con Jetpack Publicize

Ho già avuto modo di parlare di Publicize, il modulo di Jetpack che consente di pubblicare una versione condensata degli articoli pubblicati su WordPress sulle pagine dei principali Social Network come Twitter, Facebook, Google+ e altri. A patto, ovviamente, di avere un account su ciascuno di essi e di collegarlo opportunamente secondo le modalità descritte in questo articolo e riassunte dalla schermata seguente:

publicize-options

Una volta completata la configurazione, Publicize provvederà automaticamente a compilare il testo da inviare ai Social Network inserendo il titolo del nostro articolo nell’apposito widget sul lato destro della pagina di inserimento/modifica post, dandoci anche la possibilità di modificarne il contenuto a nostro piacimento.

publish-meta-publicize-expanded-38-2

Questa comodissima funzionalità è una manna dal cielo per la maggior parte dei blogger, tale da rendere senza dubbio Publicize uno dei moduli più utili dell’intera suite Jetpack. Volendo trovare a tutti i costi un difetto si potrebbe dire che, allo stato attuale,  le opzioni di configurazione del modulo sono piuttosto scarne. Non c’è ad esempio alcuna possibilità di inserire automaticamente gli hashtag, magari prendendoli dai tag associati all’articolo o da un altro campo personalizzato: funzionalità oltremodo comoda e che comincia ad essere messa a disposizione da molti plugin che si occupano di auto-pubblicazione su social, tra cui l’ottimo Revive Old Post di cui avrò modo di parlare in un prossimo articolo.

Per risolvere il problema ho creato un piccolo plugin che fa esattamente questo. Il suo nome, giusto per essere originali, è…

Publicize With Hashtags

Utilizzare il plugin è molto semplice: una volta installato, i tag dell’articolo saranno aggiunti al Custom Message presente nel widget di Jetpack Publicize sotto forma di hashtag a seguito di ogni salvataggio, come mostrato dall’immagine seguente:

publicize-with-hashtags-example-01

Come detto, il plugin svolge il suo lavoro ad ogni salvataggio dell’articolo: questo significa che gli hashtag compariranno automaticamente al primo save draft/salva bozza, update/aggiorna, publish/pubblica o altro comando similare. Ovviamente il plugin è dotato di un controllo apposito per impedire l’inserimento di hashtag duplicati, quindi non correrete il rischio che lo stesso hashtag venga inserito più di una volta.

publicize-with-hashtags-logo

Caratteristiche Principali

  • Gli hashtag verranno creati sulla base dei tag assegnati all’articolo, eliminando eventuali spazi.
  • La presenza del plugin consente di inserire hashtags manualmente, esattamente come prima e in qualsiasi posizione rispetto a quelli generati automaticamente.
  • E’ possibile riordinare a piacimento gli hashtag inseriti manualmente e automaticamente.
  • Il plugin controlla che lo stesso hashtag non sia inserito due volte dalla procedura automatica.
  • Il plugin controlla che la dimensione del Custom Message non superi un certo numero di caratteri (118 per impostazione predefinita). Tale numero può essere modificato manualmente oppure impostato a zero per disattivare il controllo.

Installazione

Il plugin è totalmente gratuito ed è stato rilasciato su licenza GPL v2.0: potete scaricare e/o installare l’ultima versione tramite l’apposita scheda presente nel Plugin Browser di WordPress.

Codice Sorgente

Nel caso in cui siate interessati a dare un’occhiata al codice o a creare una versione personalizzata del plugin, di seguito trovate il codice sorgente della versione 0.1 completo di commenti: sentitevi liberi di modificarlo come più vi aggrada.

/*
Plugin Name: Publicize With Hashtags
Plugin URI: http://www.ryadel.com/works/publicize-with-hashtags/
Description: Automatically append hashtags to any content sent by Jetpack's Publicize module: hashtags will be created using post tags: dupe check and an optional length-based threshold are also included.
Version: 0.1.2
License: GPLv2 or later
Author: Darkseal
Author URI: http://www.ryadel.com/
*/

/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

// If Jetpack is not installed or Publicize module isn't active, just exit now.
if (!class_exists('Jetpack') || !Jetpack::is_module_active('publicize')) return;

function publicize_with_hashtags() {
    
    // Set an optional character threshold (set to null to disable).
    // If you set it as a positive integer, hashtags will be appended only until this threshold is reached. 
    // Default is 118, which is good for Twitter considering a default, non-https url length, which is 22 chars as stated by Twitter standards.
    // For more info, see https://dev.twitter.com/overview/api/counting-characters and https://dev.twitter.com/overview/t.co Twitter official docs.
    // Suggested values: 
    // 118      if you plan to use only HTTP URLs
    // 117      if you plan to use both HTTP and HTTPS (or only HTTPS) URLs
    // 140      if you don't plan to append URL infos to your posts
    // 0        or <null> or <false>, if you want to tufn-off this check and append hashtags without any char limits - good if you're only using Facebook sharing.
    $mess_max_length = 118;
    
    // Set it to TRUE to strip all spaces when converting Tags to Hashtags, i.e. 'Windows 8' -> '#Windows8', FALSE to keep only first.
    // Default is TRUE (strip all spaces).
    $strip_spaces = true;
    
    // meta tag used by Publicize to store social message. Change this only if you're really know what you're doing.
    // If you do and you feel like you should, please contact me so I'll update the plugin aswell.
    $meta = '_wpas_mess';
    
    $p = get_post();
    if (empty($p)) return;
    // Get the current post social message
    $mess = get_post_meta($p->ID, $meta, true);
    // Performance-wise length check: do nothing if we're already out of threshold.
    if (!empty($mess) && !empty($mess_max_length) && $mess_max_length <= (strlen($mess))) return;
    // Get the post tags array
    $ta = get_the_tags($p->ID);  
    // Performance-wise tag check: do nothing if we don't (yet) have tags to process.
    if (empty($ta)) return;

    // From now on, we mean business. Let's start by initializing the social message (if needed).
    if (empty($mess)) $mess = '';
    // Create list of tags with hashtags in front of them until threshold is reached
    foreach ($ta as $t) {
        // Create the hashtag, stripping spaces if needed.
        $ht = '#' . (($strip_spaces) ? str_replace(' ', '', $t->name) : $t->name);
        // only process newly-added hashtags, skipping duplicate ones
        if (stripos($mess,$ht) === false) { 
            if (!empty($mess_max_length) && $mess_max_length <= (strlen($mess) + strlen($ht))) break;
            $mess .= ' '.$ht;
        }
    }
    // Update the new social message
    update_post_meta($p->ID, $meta, $mess);
}

// Hook the plugin action to 'save_post' handler.
add_action('save_post', 'publicize_with_hashtags', 99);

In alternativa potete consultare direttamente l’ultima versione su GitHub.

Una volta realizzata la vostra build, potrete cimentarvi nell’installazione seguendo i passaggi descritti nell’ottima guida ai functionality plugin di Eric Dye oppure tramite il pratico Functionality Plugin di Shea Bunge.

Link e riferimenti




Wordpress: Aggiungere hashtag ai social post inviati con Jetpack Publicize

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

One Comment on “WordPress: Aggiungere hashtag ai social post inviati con Jetpack Publicize”

  1. Pingback: Wordpress: riattivare Publicize per gli articoli già pubblicati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.