Astuce Ajouter des liens vers des types de publication personnalisés

Si vous utilisez une forme quelconque de média social, et en particulier Twitter, vous avez certainement rencontré des «liens courts», des URL raccourcies qui agissent comme une étiquette, pointant vers une page particulière mais dissimulant son URL plus longue. Ils existent depuis plus d'une décennie maintenant, mais leur utilisation a vraiment décollé avec les services de raccourcissement d'URL qui fournissaient des statistiques de clics et des limites de nombre de caractères sur les tweets..

WordPress a son propre 'shortlink' intégré - qui, par défaut, ne mérite probablement pas son nom. Voici les www.votresite.com?p=1 des liens pointant vers un seul article et que vous pouvez récupérer à partir du bouton "Obtenir un lien court" de l'écran d'édition de votre article.

Il y a une bonne raison à cela: WordPress n'a pas voulu imposer de service tiers particulier pour le raccourcissement d'URL, et sous la valeur par défaut www.votresite.com?p=1 shortlinks se trouve une API qui vous permet de la remplacer par une URL plus raccourcie d’un autre service - ou même de la vôtre.

Mais les liens courts de WordPress n'apparaissent que sur les messages - pas sur les pages, ni sur aucun autre type de message. Dans ce petit conseil, je vais vous montrer comment remédier à cette situation. (Et de la même manière, vous pouvez changer le raccourci par défaut entièrement d'un par un service de raccourcisseur d'URL).

Ouvrir le code source et localiser le wp_get_shortlink () fonction (voir Codex) on trouve ce qui suit:

 function wp_get_shortlink ($ id = 0, $ context = 'post', $ allow_slugs = true) // Autorise les plugins à court-circuiter cette fonction. $ shortlink = apply_filters ('pre_get_shortlink', false, $ id, $ context, $ allow_slugs); if (false! == $ shortlink) renvoie $ shortlink;… 

Le crochet pre_get_shortlink, Par conséquent, nous permet de contourner le traitement par défaut de WordPress pour les liens courts. Pour ce faire, notre plug-in doit seulement s’accrocher à ce filtre et renvoyer autre chose que "faux".

 / ** * Une fonction qui ajoute un bouton de raccourcis pour le type de message 'portfolio' * / function wptuts_shortlinks_for_portfolio ($ shortlink, $ id, $ context) // Le contexte peut être post / blog / meta ID ou requête $ post_id = 0; if ('query' == $ context && is_singular ('portfolio')) // Si le contexte est interrogé, utilisez l'objet interrogé actuel pour l'ID $ post_id = get_queried_object_id ();  elseif ('post' == $ context) // Si le contexte est post, utilisez l'identificateur transmis id id id post id = $ id;  // Ne faire quelque chose que si le type de publication de portefeuille est 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);

Notez que si vous ne voulez pas changer le lien court (par exemple, c'est un type de message incorrect), il est important de le renvoyer $ shortlink (la valeur filtrée qui nous a été transmise par le hook) et non pas 'false' - car d'autres plug-ins ont peut-être déjà changé $ shortlink - et en retournant false, vous seriez en train de les écraser.