Configuración dinámica para las plantillas de ActivityPub de este blog

Utilizo el plugin de ActivityPub para WordPress para agregar un endpoint webfinger, un outbox y un inbox a mi blog. A efectos prácticos, esto es todo lo que hace falta para tratar al sitio web como un usuario del fediverso, lo que significa que en teoría debería poderse seguir al blog desde la mayoría de softwares compatibles (Mastodon, Pleroma, microblog.pub…) siguiendo a @dani.

He estado haciendo algunos cambios a la forma en la que los posts de este blog se renderizan cuando se comparten por ahí. Esto es algo que siempre me ha dado pereza de hacer, por lo lento que es, porque para depurar el aspecto con el que se muestra un post, primero lo tienes que escribir (así ves el post salir en la portada), y además hacerlo público. Últimamente lo estoy volviendo a hacer más, y casi cada artículo que escribo es una excusa para ver si mis cambios funcionan, pero no cantemos victoria.

Mis demandas son pocas pero las querría respetar:

  • No quiero mandar el post completo al fediverso, porque me parece un derroche de espacio y porque visualmente ocupa mucho píxel. Para leer posts ya hay otros medios, pero microblog debería significar microblog.
  • Pero me gustaría darle un poco de identidad al post y que no sea únicamente un link con cuatro hashtags, como hacía al principio. Queda frío, impersonal, hay quien lo puede ver en feeds públicos y considerarlo spam. Además que en ocasiones no muestra ni siquiera el embed Open Graph así que la única forma de saber a dónde apunta el enlace es haciendo clic en él, cosa que querría evitar.

El problema es que el plugin de ActivityPub sólo me deja ajustar de forma global cómo quiero que se manden todos los posts a través de la pasarela. No puedo elegir una forma especial para un post concreto o para un tipo de posts en concreto. Así que he tenido que tirar de hacerme mi propio plugin para extender el funcionamiento.

Tras leerme el código fuente del plugin, resulta que está pensado para ser extensible por defecto y usa filters para permitir a otros plugins procesar los datos antes de tratarlos como definitivos. Así que hipotéticamente podría modificar a través de código la plantilla que se usa para mandar a Mastodon un post si implemento el filter correspondiente.

De momento he puesto que la configuración general sea mostrar título, primeras palabras del post y enlace, como siempre. No sabía que Mastodon soportaba blockquotes, pero ahora que lo sé, voy a envolver el extracto en un blockquote, para que se lea mejor.

Pantallazo con la configuración del plugin muestra título, extracto y enlace corto

Sin embargo, la magia está en código. He creado un pequeño plugin de PHP que todo lo que hace es consultar el tipo de post, y que para algunos casos lo reemplaza completamente por otro. El código lo comparto por aquí porque igualmente tampoco estoy tan orgulloso de esto como para hacerlo un plugin completo.

function activitypub_types_content_template( $template, $wp_obj ) {
  $post_type = \get_post_format( $wp_obj );
  switch ( $post_type ) {
    case 'status':
      return "[ap_content]";
    default:
      return $template;
  }
}

add_filter(
        'activitypub_object_content_template',
        'activitypub_types_content_template',
        10, 2
);

Con esto, cuando el post sea de tipo estado (es decir, un post tan corto que en WordPress no va ni a mostrar el título, casi como un tweet), se mostrará directamente su contenido, sin mostrar elipsis, ni incluir un enlace. Es arriesgado, pero si no hago el estado muy largo, debería mostrarse exactamente igual que si lo hubiese escrito desde mi cuenta de Mastodon.

No todos los temas de WordPress permiten elegir el tipo de post. Esta es una característica que hace años WordPress trató de potenciar (probablemente para hacer la competencia a Tumblr), pero que en los temas modernos ya ni se muestra por falta de soporte (probablemente para no hacer la competencia a Tumblr). Sin embargo, de vez en cuando me gustaría utilizarlos, por lo que me interesa que al menos se vean bien.

Un comentario en «Configuración dinámica para las plantillas de ActivityPub de este blog»

  1. Pingback: Más cosas que he cambiado por aquí (esto es una prueba) | danirod.es

Los comentarios están cerrados.