Sugerencia rápida agregar enlaces cortos a tipos de publicaciones personalizados

Si utiliza cualquier forma de redes sociales, y en particular de Twitter, es casi seguro que se encuentra con 'enlaces cortos', URL acortadas que actúan como una etiqueta, que apuntan a una página en particular pero que disfrazan su URL más larga. Han existido por más de una década, pero su uso realmente despegó con los servicios de acortamiento de URL que proporcionaban estadísticas de clics y límites de caracteres en los tweets..

WordPress tiene su propio 'enlace corto' incorporado, que, de forma predeterminada, probablemente no merece mucho el nombre. Estos son los www.yoursite.com?p=1 enlaces que apuntan a una sola publicación y puede capturarlos desde el botón "Obtener enlace corto" en la pantalla de edición de su publicación.

Hay una buena razón para esto: WordPress no quiso imponer ningún servicio de terceros en particular para acortar la URL, y por debajo de la predeterminada www.yoursite.com?p=1 shortlinks se encuentra en una API que le permite reemplazarla con una URL más reducida de otro servicio, o incluso su propia.

Pero los enlaces cortos de WordPress solo aparecen en las publicaciones, no en las páginas ni en ningún otro tipo de publicación. En este rápido consejo te mostraré cómo rectificar esto. (Y de una manera similar, puede cambiar el enlace corto predeterminado completamente por uno desde un servicio de acortamiento de URL).

Cracking abre el código fuente y localiza el wp_get_shortlink () En función (ver Codex) encontramos lo siguiente:

 function wp_get_shortlink ($ id = 0, $ context = 'post', $ allow_slugs = true) // Permitir que los complementos provoquen un cortocircuito en esta función. $ shortlink = apply_filters ('pre_get_shortlink', false, $ id, $ context, $ allow_slugs); if (false! == $ shortlink) return $ shortlink;… 

El gancho pre_get_shortlink, por lo tanto, nos permite eludir el manejo predeterminado de WordPress de los enlaces cortos. Para hacer eso, nuestro complemento solo necesita engancharse a ese filtro y devolver algo que no sea 'falso'.

 / ** * Una función que agrega un botón de enlaces cortos para el tipo de publicación 'portafolio' / function wptuts_shortlinks_for_portfolio ($ shortlink, $ id, $ context) // El contexto puede ser post / blog / meta ID o consulta $ post_id = 0; if ('query' == $ context && is_singular ('portfolio')) // Si context is query utiliza el objeto consultado actual para la ID $ post_id = get_queried_object_id ();  elseif ('post' == $ context) // Si el contexto es post, use $ id $ post_id = $ id;  // Solo haga algo si es del tipo de publicación de la cartera if ('portfolio' == get_post_type ($ post_id)) $ shortlink = home_url ('? P ='. $ Post_id);  devolver $ shortlink;  add_filter ('pre_get_shortlink', 'wptuts_shortlinks_for_portfolio', 10, 3);

Tenga en cuenta que si no desea cambiar el enlace corto (por ejemplo, es el tipo de publicación incorrecto) es importante devolver $ enlace corto (el valor filtrado que nos fue transferido por el gancho) y no "falso", ya que es posible que otros complementos ya hayan cambiado $ enlace corto - y devolviendo falso los estarías anulando.