LinkedIn Feed Pro
Plugin WordPress per integrare e visualizzare i post LinkedIn (Company Page o profili autorizzati) tramite API ufficiali LinkedIn.
by LeaseCredi · github.com/f4rizzo/wp-plugin_linkedin-feed-pro · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/f4rizzo/wp-plugin_linkedin-feed-pro/archive/refs/heads/main.zipPlugin WordPress per integrare e visualizzare i post LinkedIn (Company Page o profili autorizzati) tramite API ufficiali LinkedIn.
Cosa fa il plugin
- Gestisce autenticazione OAuth 2.0 (Authorization Code) verso LinkedIn.
- Salva in WordPress:
Client IDClient SecretAuthor URN(es.urn:li:organization:123456)
- Salva l
access tokenin modo protetto (cifrato quando OpenSSL e disponibile). - Monitora scadenza token e mostra admin notice quando il token sta per scadere o e scaduto.
- Recupera feed tramite:
- endpoint
/v2/posts - fallback
/v2/shares(in base ai permessi)
- endpoint
- Estrae i campi principali: testo, data, lifecycle state, contenuto/immagini/link.
- Implementa cache con WP Transients API (12 ore).
- Gestisce errori API con log in
debug.log(401 e 429 in modo esplicito). - Espone shortcode
[li_feed]con rendering frontend responsive. - Supporta override template da tema:
your-theme/linkedin-feed-pro/feed-view.php
- Aggiunge azione admin: Svuota Cache e Sincronizza Ora.
Requisiti
- WordPress 6.0+
- PHP 8.0+
- App LinkedIn Developer configurata
- HTTPS sul dominio del sito (fortemente consigliato)
Installazione
- Copia la cartella
linkedin-feed-proinwp-content/plugins/. - Vai in WordPress ->
Plugin. - Attiva LinkedIn Feed Pro.
- Vai in
Impostazioni -> LinkedIn Feed Pro.
Configurazione passo passo (LinkedIn + WordPress)
Step 1 - Crea l`app LinkedIn
- Apri
https://developer.linkedin.com. - Vai su My apps.
- Clicca Create app e compila i dati richiesti:
- App name
- LinkedIn Page associata
- Privacy policy URL
- Logo
Nota: in alcuni casi LinkedIn richiede verifica della pagina associata prima di usare determinate API.
Step 2 - Configura Auth nell`app LinkedIn
- Apri la tua app.
- Vai nella sezione Auth.
- Copia:
Client IDClient Secret
- Nella lista redirect URL, aggiungi esattamente questo URL:
https://TUO-DOMINIO/wp-admin/admin-post.php?action=lfp_linkedin_callback
Sostituisci TUO-DOMINIO con il dominio reale del sito.
Step 3 - Configura il plugin in WordPress
- In
Impostazioni -> LinkedIn Feed Proinserisci:- Client ID
- Client Secret
- Author URN (per ora puoi lasciarlo vuoto, lo recuperi allo step successivo)
- Salva.
Step 4 - Recupera Author URN corretto
Dal portale LinkedIn Developer usa Docs & Tools -> OAuth Token Tools .
- Apri OAuth Token Tools.
- Seleziona la tua app.
- Avvia il flow OAuth e ottieni un access token temporaneo.
- Esegui la chiamata API seguente:
curl -X GET 'https://api.linkedin.com/rest/organizationAcls?q=roleAssignee&role=ADMINISTRATOR&state=APPROVED' \
-H 'Authorization: Bearer TUO_TOKEN' \
-H 'X-Restli-Protocol-Version: 2.0.0' \
-H 'Linkedin-Version: 202601'
- Nel JSON cerca il valore
organization(esempiourn:li:organization:123456). - Inserisci quell'URN nel campo
Author URNnel plugin e salva.
Se devi usare un profilo persona, usa l'URN persona (urn:li:person:...) supportato dalla tua app e dai tuoi permessi.
Nota pratica: la chiamata API va eseguita fuori da WordPress in un client HTTP.
- Metodo consigliato: Terminale (Mac/Linux) con
curl.- Apri Terminale.
- Incolla questo comando (sostituisci TUO_TOKEN):
- Premi invio.
- Nel JSON cerca
organization, ad esempiourn:li:organization:123456. Quello va nel campoAuthor URNdel plugin.
- Alternativa: Postman o Insomnia, impostando gli header richiesti.
- Metodo: GET
- URL: stesso della curl
- Headers:
- Authorization: Bearer TUO_TOKEN
- X-Restli-Protocol-Version: 2.0.0
- Linkedin-Version: 202601
- Browser: non consigliato perche non gestisce facilmente gli header
AuthorizationeX-Restli-Protocol-Version.
Step 5 - Connetti il plugin a LinkedIn
- In
Impostazioni -> LinkedIn Feed Proclicca Connetti con LinkedIn. - Completa autorizzazione su LinkedIn.
- Al ritorno in WordPress verifica stato connessione:
- Verde: Connesso
- Rosso: Non autorizzato
Step 6 - Test feed e cache
- Inserisci shortcode in pagina/articolo:
[li_feed]
Opzionale limite:
[li_feed limit="6"]
- Pubblica la pagina e verifica i post.
- Per forzare aggiornamento usa il pulsante:
- Svuota Cache e Sincronizza Ora
Funzionamento cache
- Il feed viene salvato in transient per 12 ore.
- Durante la cache valida il plugin non richiama LinkedIn a ogni refresh.
- Il refresh manuale elimina il transient e sincronizza subito.
Override template frontend
Per personalizzare HTML/CSS senza toccare il plugin:
- Crea nel tema la cartella:
your-theme/linkedin-feed-pro/
- Copia il file plugin
templates/feed-view.phpdentro la cartella tema. - Modifica il file nel tema.
Il plugin usera automaticamente il template del tema se presente.
Sicurezza implementata
- Blocco accesso diretto ai file (
ABSPATH). - Verifica capability
manage_optionsnelle azioni admin. - Nonce check in ogni form/azione di salvataggio/invio sensibile.
- Sanitizzazione input settings.
- Escape output in admin e frontend.
Troubleshooting rapido
invalid_redirect_uri- Il redirect URI nell`app LinkedIn non combacia al 100% con quello del plugin.
unauthorized_scope_error- La tua app non ha i permessi/scope richiesti.
- HTTP
401- Token scaduto o non valido. Riconnetti il plugin.
- HTTP
429- Rate limit LinkedIn raggiunto. Attendi e riprova.
- Feed vuoto
- Verifica
Author URN, scope autorizzati e presenza post pubblicati.
- Verifica
Debug log WordPress
Per vedere errori API nel file log:
- In
wp-config.phpabilita:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
- Controlla
wp-content/debug.log.
Riferimenti utili
- LinkedIn OAuth 2.0 (Authorization Code):
- LinkedIn Developer Tools (OAuth Token Tools):
- LinkedIn Organization ACL:
Note
Le policy e i permessi LinkedIn possono cambiare nel tempo. Se una chiamata smette di funzionare, ricontrolla nel portale developer:
- prodotti abilitati
- scope concessi
- stato approvazione app
- compatibilita endpoint/version header