Se utilizzi qualsiasi forma di social media, e in particolare Twitter, allora hai quasi certamente imbattuto in "shortlinks": URL abbreviati che fungono da etichetta, puntano a una pagina specifica ma camuffano il suo URL più lungo. Sono attivi da più di un decennio, ma il loro uso è iniziato con servizi di abbreviazione degli URL che fornivano statistiche di click-through e limiti di caratteri sui tweet.
WordPress ha il suo "shortlink" integrato - che, di default, probabilmente non merita molto il nome. Queste sono le www.yoursite.com?p=1
link che puntano a un singolo post e puoi prenderli dal pulsante "Ottieni link" nella schermata di modifica del tuo post.
C'è una buona ragione per questo: WordPress non ha voluto imporre alcun particolare servizio di terze parti per accorciare gli URL, e al di sotto del valore predefinito www.yoursite.com?p=1
shortlinks è un'API che ti permette di sostituirlo con un URL più abbreviato da un altro servizio - o forse anche il tuo.
Ma i collegamenti brevi di WordPress vengono visualizzati solo nei post, non nelle pagine o in qualsiasi altro tipo di post. In questo suggerimento rapido ti mostrerò come correggerlo. (E in un modo simile è possibile modificare il collegamento di default predefinito di uno da un servizio di abbreviazione URL).
Cracking apre il codice sorgente e localizza il file wp_get_shortlink ()
funzione (vedi Codex) troviamo il seguente:
function wp_get_shortlink ($ id = 0, $ context = 'post', $ allow_slugs = true) // Permetti ai plugin di cortocircuitare questa funzione. $ shortlink = apply_filters ('pre_get_shortlink', false, $ id, $ context, $ allow_slugs); if (false! == $ shortlink) return $ shortlink; ...
L'uncino pre_get_shortlink
, pertanto, ci consente di bypassare la gestione predefinita di collegamenti brevi da WordPress. Per fare ciò il nostro plug-in deve solo collegarsi a quel filtro e restituire qualcosa di diverso da "false".
/ ** * Una funzione che aggiunge un pulsante di collegamenti brevi per il tipo di post "portfolio" * / function wptuts_shortlinks_for_portfolio ($ shortlink, $ id, $ context) // Il contesto può essere post / blog / meta ID o query $ post_id = 0; if ('query' == $ context && is_singular ('portfolio')) // Se contesto è query usa oggetto interrogato corrente per ID $ post_id = get_queried_object_id (); elseif ('post' == $ context) // Se il contesto è post, usa $ id $ post_id = $ id passato; // Fai solo qualcosa se di tipo post portfolio se ('portfolio' == get_post_type ($ post_id)) $ shortlink = home_url ('? P ='. $ Post_id); return $ shortlink; add_filter ('pre_get_shortlink', 'wptuts_shortlinks_for_portfolio', 10, 3);
Si noti che se non si desidera modificare il collegamento breve (ad esempio, è il tipo di post sbagliato) è importante restituire $ shortlink
(il valore filtrato che ci è stato passato dal gancio) e non "falso" - poiché altri plug-in potrebbero essere già stati modificati $ shortlink
- e restituendo il falso, li avresti sopraffatto.