Snelle tip koppelingen naar aangepaste berichttypen toevoegen

Als u enige vorm van sociale media, en met name Twitter, gebruikt, bent u vrijwel zeker 'shortlinks' tegengekomen - verkorte URL's die fungeren als een label, naar een bepaalde pagina verwijzen maar de langere URL verbergen. Ze zijn er nu al meer dan tien jaar, maar hun gebruik ging echt van start met URL-verkortingsservices die click-throughstatistieken en tekenlimieten voor tweets verstrekten.

WordPress heeft een eigen ingebouwde 'shortlink' - die, waarschijnlijk, de naam niet erg verdient. Dit zijn de www.yoursite.com?p=1 links die naar een enkele post verwijzen en je kunt ze pakken via de knop 'Get Shortlink' in het bewerkingsscherm van je bericht.

Daar is een goede reden voor: WordPress wilde geen specifieke service van derden opleggen voor URL-verkorting, en onder de standaard www.yoursite.com?p=1 shortlinks is een API waarmee u deze kunt vervangen door een aanzienlijk kortere URL van een andere service, of misschien zelfs die van uzelf.

Maar de shortlinks van WordPress verschijnen alleen op berichten - niet op pagina's of op een ander berichttype. In deze snelle tip laat ik je zien hoe je dit kunt corrigeren. (En op dezelfde manier kunt u de standaard shortlink volledig wijzigen door een URL-verkortingsservice).

Kraken opent de broncode en lokaliseert de wp_get_shortlink () functie (zie Codex) vinden we het volgende:

 functie wp_get_shortlink ($ id = 0, $ context = 'post', $ allow_slugs = true) // Sta plug-ins toe om deze functie te kortsluiten. $ shortlink = apply_filters ('pre_get_shortlink', false, $ id, $ context, $ allow_slugs); if (false! == $ shortlink) retourneer $ shortlink; ... 

De haak pre_get_shortlink, daarom kunnen we de standaard afhandeling van shortlinks door WordPress omzeilen. Om dat te doen, hoeft onze plug-in alleen op dat filter te haken en iets anders dan 'false' terug te sturen.

 / ** * Een functie die een shortlinks-knop toevoegt voor 'portfolio' posttype * / functie wptuts_shortlinks_for_portfolio ($ shortlink, $ id, $ context) // Context kan post / blog / meta-ID zijn of query $ post_id = 0; if ('query' == $ context && is_singular ('portfolio')) // Als contextenquery het huidige opgevraagde object gebruikt voor ID $ post_id = get_queried_object_id ();  elseif ('post' == $ context) // Als context post-gebruik is, is de verstreken $ id $ post_id = $ id;  // Doe alleen iets als van het portfolio-berichttype if ('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);

Houd er rekening mee dat als u de koppeling niet wilt wijzigen (het is bijvoorbeeld het verkeerde berichttype) het belangrijk is om terug te gaan $ shortlink (de gefilterde waarde die aan ons werd doorgegeven door de haak) en niet 'false' - omdat andere plug-ins mogelijk al zijn gewijzigd $ shortlink - en door false terug te sturen, zou je ze overschrijven.