Github Get un plugin para WordPress

wordpress
GitHub Get nace como una necesidad personal de poder incrustar código desde GitHub en WordPress. GitHub Get hace uso de WordPress HTTP API, Autenticación Básica e Identificador de Acceso Personal para acceder a los servicios Restful de GitHub. Dentro de las características de GitHub Get podemos mencionar

  • Permite incrustar código desde un repositorio público o privado
  • Permite incrustar código desde un repositorio o desde Gist
  • Syntaxis basada en shortcode
  • Cachea las respuesta usando la función nativa de WordPress set_transient, esto permite usar el plugin en sitios de alta demanda. Si el fichero o gist cambia no es necesario limpiar la caché, GitHub Get detecta el cambio y actualiza la caché mostrándose la versión actualizada.
  • Fácil de usar y configurar.
  • Compatible con WP Code Highlight.js
  • Software libre, liberado bajo licencia GPL v3.

Instalar y configurar

El modelo de desarrollo está basado en una sola rama (master) y cada versión está marcada por un commit en la forma: Release vx.x.x y un tag en la forma: vx.x.x. Este modelo de desarrollo simple permite usar GitHub Updater para mantenerme actualizado con los cambios de una versión a otra. Si UD. no usa GitHub Updater entonces puede descargar el compactado desde GitHub y seguir el procedimiento descrito en Manual_Plugin_Installation

Configurar

  1. Autenticarse en la administración de WordPress
  2. Menú > Ajustes > GitHub Get
  3. Especificar el usuario e identificador de Acceso Personal de GitHub
  4. Save

Sintaxis

[ghget atributo=valor]contenido[/ghget]

Contenido

El valor del contenido para un gist es el identificador del gist o sea el hash. Para el caso de un fichero que está en un repo es el camino/ruta de acceso del fichero dentro del repo. Para encontrar la ruta de acceso, navegar por el repositorio de GitHub hasta encontrar el fichero, luego utilizar la función «Copy path» de GitHub, no se debe pegar el resultado en el editor visual de WordPress debido a que copiará la URL completa, recomiendo que lo copie primero en un editor de texto.

Atributos

Todos los atributos son opcionales. Se puede especificar los siguientes atributos (En negrita los valores por defecto)

  • ribbon=true|false. Muestra el ribbon.
  • repo=true|false, true si desea incrustar un fichero que está en un repositorio.
  • container=contenedor|». Pemite específicar el contenedor del fichero incrustado. Este atributo acepta un string con el siguiente formato: contenedor1(clases){estilos}.contenedor2(clases){estilos}. Útil si se usa con ribbon=true ya que mostrará el ribbon fuera del contenedor.
  • filename=nombre-del-fichero-gist|». Si tiene un Gist con ficheros múltiples puede específicar que fichero desea incrustar de lo contrario se muestra el primer fichero encontrado.
  • account=nombre-de-la-cuenta|». Por defecto GitHutb Get obtendrá el contenido del fichero usando las credenciales establecidas en las opciones de configuración. Este parámetro sobreescribe ese comportamiento permitiendo incrustar contenido desde un repo o gist externo y público.
  • htmlenc=true|false. Por defecto aplicará la función htmlspecialchars para evitar que el navegador interprete tags html si desea cambiar este compartamiento establezca el valor de este atributo en false.
  • Ejemplos

    Para incrustar contenido desde GitHub inserte el shortcode en el Post o Página deseada.

    Incrustando contenido desde un Repo

    [ghget repo="true" container=pre.code(perl)]sysadmin/pscript/filereader[/ghget]
    #!/usr/bin/env perl
    # This script is released under GPL V2+
    open(FILEREAD, "< /home/yoander/projects/cake/.perms");
    my @arr;
    while (<FILEREAD>) {
    	my($line) = $_;
    	chomp($line);
    	push(@arr,$line);
    }
    close FILEREAD;
    exit join(' ',@arr); 
    

    Usanso el atributo filename para un Gist con ficheros múltiples

    [ghget  filename="file2.yaml" container=pre(yaml)]ca53e97e02cbd4e24dc2babc9b676bb7[/ghget]
    ---
    firstName: John
    lastName: Smith
    age: 25
    job: Software Developer
    address: 
      streetAddress: 21 2nd Street
      city: New York
      state: NY
      postalCode: 10021
    phoneNumber: 
    - type: home
      number: 212 555-1234
    - type: fax
      number: 646 555-4567
    gender: 
      type: male

    Usando el atributo account

    [ghget repo="true" account=symfony container=pre(markdown)]symfony/README.md[/ghget]
    <p align="center"><a href="https://symfony.com" target="_blank">
        <img src="https://symfony.com/logos/symfony_dynamic_01.svg" alt="Symfony Logo">
    </a></p>
    
    [Symfony][1] is a **PHP framework** for web and console applications and a set
    of reusable **PHP components**. Symfony is used by thousands of web
    applications and most of the [popular PHP projects][2].
    
    Installation
    ------------
    
    * [Install Symfony][4] with Composer (see [requirements details][3]).
    * Symfony follows the [semantic versioning][5] strictly, publishes "Long Term
      Support" (LTS) versions and has a [release process][6] that is predictable and
      business-friendly.
    
    Sponsor
    -------
    
    Symfony 7.1 is [backed][27] by
    - [Rector][29]
    
    **Rector** helps successful and growing companies to get the most of the code
    they already have. Including upgrading to the latest Symfony LTS. They deliver
    automated refactoring, reduce maintenance costs, speed up feature delivery, and
    transform legacy code into a strategic asset. They can handle the dirty work,
    so you can focus on the features.
    
    Help Symfony by [sponsoring][28] its development!
    
    Documentation
    -------------
    
    * Read the [Getting Started guide][7] if you are new to Symfony.
    * Try the [Symfony Demo application][23] to learn Symfony in practice.
    * Discover Symfony ecosystem in detail with [Symfony The Fast Track][26].
    * Master Symfony with the [Guides and Tutorials][8], the [Components docs][9]
      and the [Best Practices][10] reference.
    
    Community
    ---------
    
    * [Join the Symfony Community][11] and meet other members at the [Symfony events][12].
    * [Get Symfony support][13] on GitHub Discussions, Slack, etc.
    * Follow us on [GitHub][14], [Twitter][15] and [Facebook][16].
    * Read our [Code of Conduct][24] and meet the [CARE Team][25].
    
    Contributing
    ------------
    
    Symfony is an Open Source, community-driven project with thousands of
    [contributors][19]. Join them [contributing code][17] or [contributing documentation][18].
    
    Security Issues
    ---------------
    
    If you discover a security vulnerability within Symfony, please follow our
    [disclosure procedure][20].
    
    About Us
    --------
    
    Symfony development is led by the [Symfony Core Team][22]
    and supported by [Symfony contributors][19].
    
    [1]: https://symfony.com
    [2]: https://symfony.com/projects
    [3]: https://symfony.com/doc/current/reference/requirements.html
    [4]: https://symfony.com/doc/current/setup.html
    [5]: https://semver.org
    [6]: https://symfony.com/doc/current/contributing/community/releases.html
    [7]: https://symfony.com/doc/current/page_creation.html
    [8]: https://symfony.com/doc/current/index.html
    [9]: https://symfony.com/doc/current/components/index.html
    [10]: https://symfony.com/doc/current/best_practices/index.html
    [11]: https://symfony.com/community
    [12]: https://symfony.com/events/
    [13]: https://symfony.com/support
    [14]: https://github.com/symfony
    [15]: https://twitter.com/symfony
    [16]: https://www.facebook.com/SymfonyFramework/
    [17]: https://symfony.com/doc/current/contributing/code/index.html
    [18]: https://symfony.com/doc/current/contributing/documentation/index.html
    [19]: https://symfony.com/contributors
    [20]: https://symfony.com/security
    [22]: https://symfony.com/doc/current/contributing/code/core_team.html
    [23]: https://github.com/symfony/symfony-demo
    [24]: https://symfony.com/coc
    [25]: https://symfony.com/doc/current/contributing/code_of_conduct/care_team.html
    [26]: https://symfony.com/book
    [27]: https://symfony.com/backers
    [28]: https://symfony.com/sponsor
    [29]: https://getrector.com
    

    Ejemplo exótico

    En este ejemplo usaremos el atributo container creando 2 div y dándole estilos para crear el efecto de una cita

    [ghget htmlenc=false container="div(myclass1){border-left:3px solid #2196f3;font-style:italic;}.div{background-color:#ddffff;padding:7px;}(myclass2)"]a9507adb2aa40a23ca7daa1d06ef183a[/ghget]
    GNU Manifesto
    GNU, which stands for Gnu's Not Unix, is the name for the complete Unix-compatible software system which I am writing so that I can give it away free to everyone who can use it.
    Richard Stallman.

    Errores

    Si GitHub Get no puede obtener el contenido del fichero deseado mostrará un mensaje informativo con el objetivo de darle alguna pista sobre lo que puede estar mal.

    Nombre inválido de fichero que está en un Repo

    Invalid repo file: sysadmin/shscript/acl-webdev1 (Not Found), Repos

    Nombre inválido de fichero que está en un Gist

    Invalid file name: file2.json, Gist

    Gist inválido

    Invalid Gist: ca53e97e02cbd4e24dc2babc9b676bbss7 (Not Found), Gists

    Como nota final es recomendable usar este plugin conjuntamente con Transients Manager de modo que puede borrar la cache si lo desea. Todas las llaves de la cache tienen en común la palabra ghget

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.