Sfat rapid Adăugați scurte linkuri la tipurile personalizate de postări

Dacă folosiți orice formă de social media și mai ales Twitter, atunci aproape că ați întâmpinat "shortlinks" - scurte URL-uri care acționează ca o etichetă, indicând o anumită pagină, dar deghizând adresa URL mai lungă. Au fost în jur de peste un deceniu acum, dar utilizarea lor a decolat într-adevăr cu serviciile de scurtare a URL-urilor care au oferit statistici de clicuri și limite de caractere pentru tweets.

WordPress are propriul său built-in "shortlink" - care, în mod implicit, probabil nu merită foarte mult numele. Acestea sunt www.yoursite.com?p=1 link-uri care indică o singură postare și le puteți apuca de pe butonul 'Get Shortlink' din ecranul de editare a postării.

Există un motiv bun pentru aceasta: WordPress nu a vrut să impună un anumit serviciu terță parte pentru scurtarea adreselor URL, iar sub valoarea implicită www.yoursite.com?p=1 shortlinks constă într-un API care vă permite să îl înlocuiți cu o adresă URL mai scurt redusă de la un alt serviciu - sau chiar chiar de propria dvs..

Însă link-urile scurte ale WordPress apar numai pe postări - nu pe pagini sau pe orice alt tip de postare. În acest sfat rapid vă voi arăta cum să remediați acest lucru. (Și într-un mod similar, puteți schimba scurtlinkul prestabilit în totalitate cu unul dintr-un serviciu de scurteneri pentru adrese URL).

Spargerea deschide codul sursă și localizarea wp_get_shortlink () (vezi Codex) găsim următoarele:

 funcția wp_get_shortlink ($ id = 0, $ context = 'post', $ allow_slugs = true) // Permiteți pluginurilor să scurteze această funcție. $ shortlink = apply_filters ('pre_get_shortlink', false, $ id, $ context, $ allow_slugs); dacă (false! == $ shortlink) returnează $ shortlink; ... 

Carligul pre_get_shortlink, prin urmare, ne permite să ocolim manipularea implicită a scurtăturilor de WordPress. Pentru a face acest lucru plug-in-ul nostru are nevoie doar de a cârlig pe acest filtru și de a returna orice altceva decât "fals".

 / ** * O funcție care adaugă un buton pentru scurtături pentru tipul de post de tip portofoliu / funcția wptuts_shortlinks_for_portfolio ($ shortlink, $ id, $ context) // Contextul poate fi post / blog / meta ID sau interogare $ post_id = 0; if ('interogare' == $ context && este_singular ('portofoliu')) // Dacă contextul este interogare, utilizați obiectul curent queried pentru ID $ post_id = get_queried_object_id ();  elseif ('post' == $ context) // Dacă contextul este post, folosiți $ id $ post_id = $ id;  // Doar face ceva dacă este tipul de post de portofoliu dacă ('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);

Rețineți că, dacă nu doriți să schimbați linkurile scurte (de exemplu, este un tip de post greșit), este important să reveniți $ Shortlink (valoarea filtrată care ne-a fost transmisă de cârlig) și nu "falsă" - deoarece alte plug-in-uri s-ar fi putut schimba deja $ Shortlink - și prin returnarea falsului le-ai fi suprasolicitat.

Cod